# Swedish translation for gtkmm-documentation. # Copyright © 2022 gtkmm-documentation's COPYRIGHT HOLDER # This file is distributed under the same license as the gtkmm-documentation package. # Anders Jonsson , 2022. # msgid "" msgstr "" "Project-Id-Version: gtkmm-documentation master\n" "POT-Creation-Date: 2024-05-31 14:58+0000\n" "PO-Revision-Date: 2022-10-12 18:48+0200\n" "Last-Translator: Anders Jonsson \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.1.1\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "Anders Jonsson , 2022" #. (itstool) path: info/title #: C/index-in.docbook:45 msgid "Programming with gtkmm 4" msgstr "Programmering med gtkmm 4" #. (itstool) path: authorgroup/author #: C/index-in.docbook:47 msgid "" "MurrayCumming" msgstr "" "MurrayCumming" #. (itstool) path: authorgroup/author #: C/index-in.docbook:50 #, fuzzy msgid "" "BernhardRieder Chapter on \"Timeouts\"." msgstr "" "BernhardRieder Kapitlet ”Timeout”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:54 msgid "" "JonathonJongsma Chapter on \"Drawing with Cairo\". " "Chapter on \"Working with gtkmm's Source Code\". " "Chapter on \"Recent Files\"." msgstr "" "JonathonJongsma Kapitlet ”Rita med Cairo”. Kapitlet " "”Arbeta med gtkmm:s källkod”. Kapitlet ”Senaste filer”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:60 msgid "" "OleLaursen Parts of chapter on \"Internationalization\"." msgstr "" "OleLaursen Delar av kapitlet ”Internationalisering”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:64 msgid "" "MarkoAnastasov Chapter on \"Printing\". Parts of " "chapter on \"Internationalization\"." msgstr "" "MarkoAnastasov Kapitlet om ”Utskrift”. Delar av " "kapitlet ”Internationalisering”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:69 #, fuzzy msgid "" "DanielElstner Section \"Build Structure\" of chapter on \"Wrapping C " "Libraries with gmmproc\"." msgstr "" "DanielElstner Avsnittet ”Byggstruktur” i kapitlet ”Omsluta C-" "bibliotek med gmmproc”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:73 msgid "" "ChrisVine " "Chapter on \"Multi-threaded programs\"." msgstr "" "ChrisVine " "Kapitlet ”Flertrådade program”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:77 msgid "" "DavidKing " "Section on Gtk::Grid." msgstr "" "DavidKing " "Avsnittet om Gtk::Grid." #. (itstool) path: authorgroup/author #: C/index-in.docbook:81 #, fuzzy #| msgid "" #| "PedroFerreira Chapter on Keyboard Events." msgid "" "PedroFerreira Chapter on \"Keyboard Events\"." msgstr "" "PedroFerreira Kapitlet om tangentbordshändelser." #. (itstool) path: authorgroup/author #: C/index-in.docbook:85 #, fuzzy #| msgid "" #| "KjellAhlstedt Update from gtkmm 3 to gtkmm 4. " #| "Chapter on \"Building applications\"." msgid "" "KjellAhlstedt Update from gtkmm 3 to gtkmm 4. " "Chapter on \"Building applications\". Chapter on " "\"The DropDown Widget\". Chapter on \"ListView, GridView, " "ColumnView\"." msgstr "" "KjellAhlstedt Uppdatering från gtkmm 3 till gtkmm 4. " "Kapitlet ”Bygga program”." #. (itstool) path: authorgroup/author #: C/index-in.docbook:92 #, fuzzy msgid "" "DanielBoles Notes on need to remove widgets in non-managed wrappers " "from parents to dispose, other tweaks." msgstr "" "DanielElstner Avsnittet ”Byggstruktur” i kapitlet ”Omsluta C-" "bibliotek med gmmproc”." #. (itstool) path: abstract/para #: C/index-in.docbook:100 msgid "" "This book explains key concepts of the gtkmm C++ " "API for creating user interfaces. It also introduces the main user interface " "elements (\"widgets\")." msgstr "" "Denna bok förklarar nyckelkoncept i gtkmm:s C++-" "API för att skapa användargränssnitt. Den introducerar också huvudelementen " "i användargränssnitt (”komponenter”)." #. (itstool) path: info/copyright #: C/index-in.docbook:103 msgid "" "2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 " "Murray Cumming" msgstr "" "2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 " "Murray Cumming" #. (itstool) path: legalnotice/para #: C/index-in.docbook:109 msgid "" "Permission is granted to copy, distribute and/or modify this document under " "the terms of the GNU Free Documentation License, Version 1.2 or any later " "version published by the Free Software Foundation; with no Invariant " "Sections, no Front-Cover Texts, and no Back-Cover Texts. You may obtain a " "copy of the GNU Free Documentation License from the Free Software Foundation " "by visiting their Web site or by writing to: Free Software Foundation, Inc., " "59 Temple Place - Suite 330, Boston, MA 02111-1307, USA." msgstr "" "Tillstånd att kopiera, distribuera och/eller modifiera detta dokument ges " "under villkoren i GNU Free Documentation License, version 1.2 eller senare, " "utgivet av Free Software Foundation, utan standardavsnitt och omslagstexter. " "Du kan erhålla en kopia av GNU Free Documentation License från Free Software " "Foundation genom att besöka deras webbplats eller genom att skriva till: " "Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA " "02111-1307, USA." #. (itstool) path: chapter/title #: C/index-in.docbook:120 msgid "Introduction" msgstr "Introduktion" #. (itstool) path: section/title #: C/index-in.docbook:123 msgid "This book" msgstr "Denna bok" #. (itstool) path: section/para #: C/index-in.docbook:125 msgid "" "This book explains key concepts of the gtkmm C++ " "API for creating user interfaces. It also introduces the main user interface " "elements (\"widgets\"). Although it mentions classes, constructors, and " "methods, it does not go into great detail. Therefore, for full API " "information you should follow the links into the reference documentation." msgstr "" "Denna bok förklarar nyckelkoncept i gtkmm:s C++-" "API för att skapa användargränssnitt. Den introducerar också huvudelementen " "i användargränssnitt (”komponenter”). Även om den nämner klasser, " "konstruktorer och metoder så går den inte på djupet. För fullständig API-" "information bör du därmed följa länkarna till referensdokumentationen." #. (itstool) path: section/para #: C/index-in.docbook:127 msgid "" "This book assumes a good understanding of C++, and how to create C++ " "programs." msgstr "" "Denna bok förutsätter en god förståelse av C++ och hur du skapar C++-program." #. (itstool) path: section/para #: C/index-in.docbook:129 msgid "" "We would very much like to hear of any problems you have learning " "gtkmm with this document, and would appreciate " "input regarding improvements. Please see the Contributing section for further information." msgstr "" "Vi vill gärna veta om eventuella problem du har när du lär dig " "gtkmm med detta dokument, och skulle uppskatta " "förslag på förbättringar. Se avsnittet Bidra för mer information." #. (itstool) path: section/title #: C/index-in.docbook:137 msgid "gtkmm" msgstr "gtkmm" #. (itstool) path: section/para #: C/index-in.docbook:139 msgid "" "gtkmm is a C++ wrapper for GTK, a library used to create graphical " "user interfaces. It is licensed using the LGPL license, so you can develop " "open software, free software, or even commercial non-free software using " "gtkmm without purchasing licenses." msgstr "" "gtkmm är ett C++-omslag för GTK, ett bibliotek som används för att " "skapa grafiska användargränssnitt. Det är licensierat under licensen LGPL, " "så du kan utveckla öppen programvara, fri programvara eller till och med " "kommersiell icke-fri programvara med gtkmm utan " "att köpa licenser." #. (itstool) path: section/para #: C/index-in.docbook:147 msgid "" "gtkmm was originally named gtk-- because GTK was " "originally named GTK+ and had a + in the name. However, as -- is not easily " "indexed by search engines, the package generally went by the name " "gtkmm, and that's what we stuck with." msgstr "" "gtkmm kallades ursprungligen gtk-- eftersom GTK i " "början hette GTK+ och hade ett + i namnet. Men eftersom -- inte lätt kan " "indexeras av sökmotorer så gick paketet allmänt under namnet " "gtkmm vilket vi sedan höll oss till." #. (itstool) path: section/title #: C/index-in.docbook:152 msgid "Why use gtkmm instead of GTK?" msgstr "Varför använda gtkmm i stället för GTK?" # TODO: realize #. (itstool) path: section/para #: C/index-in.docbook:154 #, fuzzy #| msgid "" #| "gtkmm allows you to write code using normal C+" #| "+ techniques such as encapsulation, derivation, and polymorphism. As a C+" #| "+ programmer you probably already realise that this leads to clearer and " #| "better organized code." msgid "" "gtkmm allows you to write code using normal C++ " "techniques such as encapsulation, derivation, and polymorphism. As a C++ " "programmer you probably already realize that this leads to clearer and " "better organized code." msgstr "" "gtkmm låter dig skriva kod med vanliga C++-" "tekniker som inkapsling, härledning och polymorfism. Som C++-programmerare " "inser du förmodligen redan att detta leder till tydligare och bättre " "organiserad kod." #. (itstool) path: section/para #: C/index-in.docbook:155 msgid "" "gtkmm is more type-safe, so the compiler can " "detect errors that would only be detected at run time when using C. This use " "of specific types also makes the API clearer because you can see what types " "should be used just by looking at a method's declaration." msgstr "" "gtkmm är mer typsäkert, så kompilatorn kan " "upptäcka fel som bara skulle upptäckas vid körning om du använde C. Denna " "användning av specifika typer gör också API:t tydligare eftersom du kan se " "vilka typer som ska användas bara genom att titta på en metods deklaration." #. (itstool) path: section/para #: C/index-in.docbook:156 msgid "" "Inheritance can be used to derive new widgets. The derivation of new widgets " "in GTK C code is so complicated and error prone that almost no C coders do " "it. As a C++ developer you know that derivation is an essential Object " "Orientated technique." msgstr "" "Arv kan användas för att härleda nya komponenter. Härledandet av nya " "komponenter i GTK:s C-kod är så komplicerad och inbjudande till fel, så att " "nästan inga C-kodare gör det. Som C++-utvecklare vet du att härledning är en " "viktig teknik i objektorientering." #. (itstool) path: section/para #: C/index-in.docbook:157 msgid "" "Member instances can be used, simplifying memory management. All GTK C " "widgets are dealt with by use of pointers. As a C++ coder you know that " "pointers should be avoided where possible." msgstr "" "Medlemsinstanser kan användas vilket förenklar minneshantering. Alla C-" "komponenter i GTK hanteras genom användning av pekare. Som C++-kodare vet du " "att pekare ska undvikas när möjligt." #. (itstool) path: section/para #: C/index-in.docbook:158 msgid "" "gtkmm involves less code compared to GTK, which " "uses prefixed function names and lots of cast macros." msgstr "" "gtkmm innefattar mindre kod än GTK, vilket " "använder prefixade funktionsnamn och många typkonverteringsmakron." #. (itstool) path: section/title #: C/index-in.docbook:162 msgid "gtkmm compared to Qt" msgstr "gtkmm jämfört med Qt" #. (itstool) path: section/para #: C/index-in.docbook:164 msgid "" "Trolltech's Qt is the closest competition to gtkmm, so it deserves discussion." msgstr "" "Trolltechs Qt är den närmaste konkurrenten till gtkmm, så det förtjänar att diskuteras." # TODO: Standardize? #. (itstool) path: section/para #: C/index-in.docbook:166 #, fuzzy #| msgid "" #| "gtkmm developers tend to prefer " #| "gtkmm to Qt because gtkmm does things in a more C++ way. Qt originates from a time " #| "when C++ and the standard library were not standardised or well supported " #| "by compilers. It therefore duplicates a lot of stuff that is now in the " #| "standard library, such as containers and type information. Most " #| "significantly, Trolltech modified the C++ language to provide signals, so " #| "that Qt classes cannot be used easily with non-Qt classes. " #| "gtkmm was able to use standard C++ to provide " #| "signals without changing the C++ language. See the FAQ for more " #| "detailed differences." msgid "" "gtkmm developers tend to prefer " "gtkmm to Qt because gtkmm does things in a more C++ way. Qt originates from a time when C+" "+ and the standard library were not standardized or well supported by " "compilers. It therefore duplicates a lot of stuff that is now in the " "standard library, such as containers and type information. Most " "significantly, Trolltech modified the C++ language to provide signals, so " "that Qt classes cannot be used easily with non-Qt classes. " "gtkmm was able to use standard C++ to provide " "signals without changing the C++ language. See the FAQ for more " "detailed differences." msgstr "" "gtkmm-utvecklare tenderar att föredra " "gtkmm över Qt för att gtkmm gör saker på ett mer C++-aktigt sätt. Qt härstammar från en tid " "då C++ och standardbiblioteket varken standardiserats eller stöddes " "ordentligt av kompilatorer. Det duplicerar därför mycket saker som nu är i " "standardbiblioteket, som behållare och typinformation. I synnerhet " "modifierade Trolltech C++-språket så det tillhandahöll signaler, så Qt-" "klasser kan inte lätt användas med klasser som inte är Qt. " "gtkmm kunde använda standard-C++ för att " "tillhandahålla signaler utan att ändra C++-språket. Se frågor och svar " "för mer detaljerade skillnader." #. (itstool) path: section/title #: C/index-in.docbook:171 msgid "gtkmm is a wrapper" msgstr "gtkmm är ett omslag" #. (itstool) path: section/para #: C/index-in.docbook:173 msgid "" "gtkmm is not a native C++ toolkit, but a C++ " "wrapper of a C toolkit. This separation of interface and implementation has " "advantages. The gtkmm developers spend most of " "their time talking about how gtkmm can present " "the clearest API, without awkward compromises due to obscure technical " "details. We contribute a little to the underlying GTK code base, but so do " "the C coders, and the Perl coders and the Python coders, etc. Therefore GTK " "benefits from a broader user base than language-specific toolkits - there " "are more implementers, more developers, more testers, and more users." msgstr "" "gtkmm är inte en inhemsk C++-verktygslåda, utan " "ett C++-omslag för en C-verktygslåda. Denna uppdelning av gränssnitt och " "implementation har fördelar. Utvecklarna av gtkmm " "spenderar sin mesta tid åt att prata om hur gtkmm " "kan erbjuda det klaraste API:t, utan klumpiga kompromisser på grund av " "obskyra tekniska detaljer. Vi bidrar lite grann till den underliggande GTK-" "kodbasen, men så gör även C-kodarna, Perl-kodarna och Python-kodarna o.s.v. " "Därigenom drar GTK nytta av en bredare användarbas än språkspecifika " "verktygslådor - det finns fler implementatörer, fler utvecklare, fler " "testare, och fler användare." #. (itstool) path: chapter/title #: C/index-in.docbook:181 msgid "Installation" msgstr "Installation" #. (itstool) path: section/title #: C/index-in.docbook:184 msgid "Dependencies" msgstr "Beroenden" #. (itstool) path: section/para #: C/index-in.docbook:186 msgid "" "Before attempting to install gtkmm-4.0, you might first need to install " "these other packages." msgstr "" "Innan du försöker installera gtkmm-4.0, kan du först behöva installera " "dessa andra paket." #. (itstool) path: listitem/para #: C/index-in.docbook:191 msgid "sigc++-3.0" msgstr "sigc++-3.0" #. (itstool) path: listitem/para #: C/index-in.docbook:192 msgid "gtk4" msgstr "gtk4" #. (itstool) path: listitem/para #: C/index-in.docbook:193 msgid "glibmm-2.68" msgstr "glibmm-2.68" #. (itstool) path: listitem/para #: C/index-in.docbook:194 msgid "cairomm-1.16" msgstr "cairomm-1.16" #. (itstool) path: listitem/para #: C/index-in.docbook:195 msgid "pangomm-2.48" msgstr "pangomm-2.48" #. (itstool) path: section/para #: C/index-in.docbook:197 msgid "" "These dependencies have their own dependencies, including the following " "applications and libraries:" msgstr "" "Dessa beroenden har sina egna beroenden, inkluderande följande program och " "bibliotek:" #. (itstool) path: listitem/para #: C/index-in.docbook:202 msgid "pkg-config" msgstr "pkg-config" #. (itstool) path: listitem/para #: C/index-in.docbook:203 msgid "glib-2.0" msgstr "glib-2.0" #. (itstool) path: listitem/para #: C/index-in.docbook:204 msgid "pango" msgstr "pango" #. (itstool) path: listitem/para #: C/index-in.docbook:205 msgid "cairo" msgstr "cairo" #. (itstool) path: listitem/para #: C/index-in.docbook:206 msgid "gdk-pixbuf-2.0" msgstr "gdk-pixbuf-2.0" #. (itstool) path: listitem/para #: C/index-in.docbook:207 msgid "graphene-1.0" msgstr "graphene-1.0" #. (itstool) path: section/title #: C/index-in.docbook:212 msgid "Unix and Linux" msgstr "Unix och Linux" #. (itstool) path: section/title #: C/index-in.docbook:215 msgid "Prebuilt Packages" msgstr "Förbyggda paket" #. (itstool) path: section/para #: C/index-in.docbook:217 msgid "" "Recent versions of gtkmm are packaged by nearly " "every major Linux distribution these days. So, if you use Linux, you can " "probably get started with gtkmm by installing the " "package from the official repository for your distribution. Distributions " "that include gtkmm in their repositories include " "Debian, Ubuntu, Red Hat, Fedora, Mandriva, Suse, and many others." msgstr "" "De senaste versionerna av gtkmm paketeras numera " "av nästan alla större Linux-distributioner. Så om du använder Linux kan du " "troligen komma igång med gtkmm genom att " "installera paketet från det officiella förrådet för din distribution. " "Distributioner som inkluderar gtkmm i sina förråd " "inkluderar Debian, Ubuntu, Red Hat, Fedora, Mandriva, Suse och många fler." #. (itstool) path: section/para #: C/index-in.docbook:225 msgid "" "The names of the gtkmm packages vary from " "distribution to distribution (e.g. libgtkmm-4.0-dev on Debian and Ubuntu or gtkmm4.0-devel on Red Hat and Fedora), so check with your distribution's " "package management program for the correct package name and install it like " "you would any other package." msgstr "" "Namnen på gtkmm-paketen varierar från " "distribution till distribution (t.ex. libgtkmm-4.0-dev på Debian och Ubuntu eller gtkmm4.0-devel på Red Hat och Fedora), så se i din distributions " "pakethanteringsprogram vad som är rätt paketnamn och installera det som " "vilket annat paket som helst." #. (itstool) path: note/para #: C/index-in.docbook:233 msgid "" "The package names will not change when new API/ABI-compatible versions of " "gtkmm are released. Otherwise they would not be " "API/ABI-compatible. So don't be surprised, for instance, to find " "gtkmm 4.8 supplied by Debian's " "libgtkmm-4.0-dev package." msgstr "" "Paketnamnen kommer inte ändras när nya API/ABI-kompatibla versioner av " "gtkmm släpps. Annars skulle de inte vara API/ABI-" "kompatibla. Så bli inte överraskad om exempelvis gtkmm 4.8 tillhandahålls av paketet libgtkmm-4.0-dev i Debian." #. (itstool) path: section/title #: C/index-in.docbook:243 msgid "Installing From Source" msgstr "Installera från källkod" #. (itstool) path: section/para #: C/index-in.docbook:245 msgid "" "If your distribution does not provide a pre-built gtkmm package, or if you want to install a different version than the " "one provided by your distribution, you can also install gtkmm from source. The source code for gtkmm can be downloaded from ." msgstr "" "Om din distribution inte tillhandahåller ett förbyggt gtkmm-paket, eller om du vill installera en annan version än den som " "tillhandahålls av din distribution, så kan du även installera " "gtkmm från källkod. Källkoden för " "gtkmm kan hämtas från ." #. (itstool) path: section/para #: C/index-in.docbook:251 msgid "" "After you've installed all of the dependencies, download the " "gtkmm source code, unpack it, and change to the " "newly created directory. gtkmm can be built with " "Meson. See the README file in the gtkmm version you've downloaded." msgstr "" "Efter att du installerat alla beroendena hämtar du gtkmm-källkoden, packar upp den, och går till den nyskapade " "katalogen. gtkmm kan byggas med Meson. Se filen " "README i gtkmm-versionen som " "du hämtat." # TODO: root password for su, not sudo #. (itstool) path: note/para #: C/index-in.docbook:258 msgid "" "Remember that on a Unix or Linux operating system, you will probably need to " "be root to install software. The su or " "sudo command will allow you to enter the root password and have root status temporarily." msgstr "" "Kom i håg att på ett Unix- eller Linux-operativsystem kommer du troligen " "behöva vara root för att installera programvara. " "Kommandot su eller sudo kommer låta " "dig mata in root-lösenordet och tillfälligt få " "root-status." #. (itstool) path: section/para #: C/index-in.docbook:265 msgid "" "The configure script or meson will " "check to make sure all of the required dependencies are already installed. " "If you are missing any dependencies, it will exit and display an error." msgstr "" "configure-skriptet eller meson " "kommer kontrollera så att alla de beroenden som krävs redan finns " "installerade. Om du saknar några beroenden kommer det att avsluta och visa " "ett fel." #. (itstool) path: para/screen #: C/index-in.docbook:276 #, no-wrap msgid "" "\n" "# meson setup --prefix=/usr <builddir> <srcdir>\n" "# meson configure --prefix=/usr\n" "# ./configure --prefix=/usr\n" msgstr "" "\n" "# meson setup --prefix=/usr <byggkat> <källkat>\n" "# meson configure --prefix=/usr\n" "# ./configure --prefix=/usr\n" #. (itstool) path: section/para #: C/index-in.docbook:270 msgid "" "By default, gtkmm if built with Meson or " "Autotools, will be installed under the /usr/local " "directory. On some systems you may need to install to a different location. " "For instance, on Red Hat Linux systems you might use the --prefix option with configure, like one of: <_:screen-1/>" msgstr "" "Som standard kommer gtkmm om det byggts med Meson " "eller Autotools att installeras under katalogen /usr/local. På vissa system kan du behöva installera på en annan plats. På " "Red Hat-system använder du exempelvis kanske flaggan --prefix med configure, som en av: <_:screen-1/>" #. (itstool) path: warning/para #: C/index-in.docbook:283 msgid "" "You should be very careful when installing to standard system prefixes such " "as /usr. Linux distributions install software packages " "to /usr, so installing a source package to this prefix " "could corrupt or conflict with software installed using your distribution's " "package-management system. Ideally, you should use a separate prefix for all " "software you install from source." msgstr "" "Du bör vara väldigt försiktig när du installerar till standardsystemprefix " "som /usr. Linux-distributioner installerar " "programvarupaket till /usr, så att installera ett " "programvarupaket till detta prefix kan förstöra eller stå i konflikt med " "programvara som installerats med din distributions pakethanteringssystem. " "Idealt bör du använda ett separat prefix för all programvara som du " "installerar från källkod." #. (itstool) path: section/para #: C/index-in.docbook:292 msgid "" "If you want to help develop gtkmm or experiment " "with new features, you can also install gtkmm " "from git. Most users will never need to do this, but if you're interested in " "helping with gtkmm development, see the Working with gtkmm's Source Code appendix." msgstr "" "Om du vill hjälpa till med att utveckla gtkmm " "eller experimentera med nya funktioner så kan du även installera " "gtkmm från git. De flesta användare kommer aldrig " "behöva göra detta, men om du är intresserad av att hjälpa till med " "gtkmm-utveckling, se bilagan Arbeta med gtkmm:s källkod." #. (itstool) path: section/title #: C/index-in.docbook:302 msgid "Microsoft Windows" msgstr "Microsoft Windows" #. (itstool) path: section/para #: C/index-in.docbook:304 msgid "" "GTK and gtkmm were designed to work well with " "Microsoft Windows, and the developers encourage its use on the win32 " "platform. However, Windows has no standard installation system for " "development libraries. Please see the Windows Installation page or the gtkmm and " "Win32 appendix for Windows-specific installation instructions and " "notes." msgstr "" "GTK och gtkmm designades för att fungera bra med " "Microsoft Windows, och utvecklarna uppmuntrar dess användning på win32-" "plattformen. Windows har dock inget standardinstallationssystem för " "utvecklingsbibliotek. Se sidan för Windows-installation eller gtkmm och " "Win32-bilagan för Windows-specifika installationsinstruktioner och " "anteckningar." #. (itstool) path: chapter/title #: C/index-in.docbook:315 msgid "Basics" msgstr "Grunder" #. (itstool) path: chapter/para #: C/index-in.docbook:317 msgid "" "This chapter will introduce some of the most important aspects of " "gtkmm coding. These will be demonstrated with " "simple working example code. However, this is just a taster, so you need to " "look at the other chapters for more substantial information." msgstr "" "Detta kapitel kommer introducera några av de viktigaste aspekterna kring " "kodande med gtkmm. Dessa kommer demonstreras med " "enkel, fungerande exempelkod. Detta är dock bara ett smakprov, så du kommer " "behöva titta på de andra kapitlen för mer påtaglig information." #. (itstool) path: chapter/para #: C/index-in.docbook:320 msgid "" "Your existing knowledge of C++ will help you with gtkmm as it would with any library. Unless we state otherwise, you " "can expect gtkmm classes to behave like any other " "C++ class, and you can expect to use your existing C++ techniques with " "gtkmm classes." msgstr "" "Din befintliga C++-kunskap kommer hjälpa dig med gtkmm som den skulle göra med alla bibliotek. Om vi inte uttryckligen " "säger annat kan du förvänta dig att gtkmm-klasser " "kommer bete sig som vilken annan C++-klass som helst, och du kan förvänta " "dig att använda dina befintliga C++-tekniker med gtkmm-klasser." #. (itstool) path: section/title #: C/index-in.docbook:325 C/index-in.docbook:3940 msgid "Simple Example" msgstr "Enkelt exempel" #. (itstool) path: section/para #: C/index-in.docbook:327 msgid "" "To begin our introduction to gtkmm, we'll start " "with the simplest program possible. This program will create an empty 200 x " "200 pixel window." msgstr "" "För att inleda vår introduktion till gtkmm så " "börjar vi enklast möjliga program. Detta program kommer skapa ett tomt " "fönster på 200 × 200 bildpunkter." #. (itstool) path: section/para #: C/index-in.docbook:332 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:334 msgid "We will now explain each part of the example" msgstr "Vi kommer nu förklara varje del av exemplet" #. (itstool) path: section/programlisting #: C/index-in.docbook:335 #, no-wrap msgid "#include <gtkmm.h>" msgstr "#include <gtkmm.h>" #. (itstool) path: section/para #: C/index-in.docbook:336 #, fuzzy msgid "" "All gtkmm programs must include certain " "gtkmm headers; gtkmm.h " "includes the entire gtkmm kit. This is usually " "not a good idea, because it includes a megabyte or so of headers, but for " "simple programs, it suffices." msgstr "" "Alla gtkmm-program måste innehålla vissa " "gtkmm-huvuden; gtkmm.h " "inkluderar hela gtkmm-kittet. Detta är vanligen " "ingen bra idé, då det inkluderar en megabyte eller så med huvuden, men för " "enkla program duger det." #. (itstool) path: section/para #: C/index-in.docbook:343 msgid "The next part of the program:" msgstr "Nästa del av programmet:" #. (itstool) path: section/programlisting #: C/index-in.docbook:344 #, no-wrap msgid "" "class MyWindow : public Gtk::Window\n" "{\n" "public:\n" " MyWindow();\n" "};\n" "\n" "MyWindow::MyWindow()\n" "{\n" " set_title(\"Basic application\");\n" " set_default_size(200, 200);\n" "}" msgstr "" "class MyWindow : public Gtk::Window\n" "{\n" "public:\n" " MyWindow();\n" "};\n" "\n" "MyWindow::MyWindow()\n" "{\n" " set_title(\"Enkelt program\");\n" " set_default_size(200, 200);\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:355 msgid "" "defines the MyWindow class. Its default constructor " "sets the window's title and default (initial) size." msgstr "" "definierar klassen MyWindow. Dess standardkonstruktor " "ställer in fönstrets titel and (initial) standardstorlek." #. (itstool) path: section/para #: C/index-in.docbook:360 msgid "The main() function's first statement:" msgstr "main()-funktionens första sats:" #. (itstool) path: section/programlisting #: C/index-in.docbook:361 #, no-wrap msgid "auto app = Gtk::Application::create(\"org.gtkmm.examples.base\");" msgstr "auto app = Gtk::Application::create(\"org.gtkmm.examples.base\");" #. (itstool) path: section/para #: C/index-in.docbook:362 msgid "" "creates a Gtk::Application object, stored in a " "Glib::RefPtr smartpointer. This is needed in all " "gtkmm applications. The create() method for this object initializes gtkmm." msgstr "" "skapar ett Gtk::Application-objekt, lagrat i en " "Glib::RefPtr-smartpekare. Detta behövs i alla " "gtkmm-program. Metoden create() för detta objekt initierar gtkmm." #. (itstool) path: section/para #: C/index-in.docbook:367 #, fuzzy msgid "" "The last line creates and shows a window and enters the gtkmm main processing loop, which will finish when the window is " "closed. Your main() function will then return with an " "appropriate success or error code. The argc and " "argv arguments, passed to your application on the " "command line, can be checked when make_window_and_run() is called, but this simple application does not use those " "arguments." msgstr "" "Den sista raden skapar och visar ett fönster och går in i huvudslingan för " "gtkmm, vilken kommer slutföras när fönstret " "stängs. Din main()-funktion kommer sedan returnera med " "en lämplig avslutnings- eller felkod. Argumenten argc " "och argv som skickas till ditt program på " "kommandoraden kan kontrolleras när make_window_and_run() anropas, men detta enkla program använder inte dessa argument." #. (itstool) path: section/programlisting #: C/index-in.docbook:373 #, no-wrap msgid "return app->make_window_and_run<MyWindow>(argc, argv);" msgstr "return app->make_window_and_run<MyWindow>(argc, argv);" #. (itstool) path: section/para #: C/index-in.docbook:375 msgid "" "After putting the source code in simple.cc you can " "compile the above program with gcc using:" msgstr "" "Efter att ha stoppat källkoden i simple.cc kan du " "kompilera programmet ovan med gcc genom:" #. (itstool) path: section/programlisting #: C/index-in.docbook:379 #, no-wrap msgid "g++ simple.cc -o simple `pkg-config --cflags --libs gtkmm-4.0` -std=c++17" msgstr "g++ simple.cc -o simple `pkg-config --cflags --libs gtkmm-4.0` -std=c++17" #. (itstool) path: section/para #: C/index-in.docbook:380 msgid "" "Note that you must surround the pkg-config invocation " "with backquotes. Backquotes cause the shell to execute the command inside " "them, and to use the command's output as part of the command line. Note also " "that simple.cc must come before the pkg-config invocation on the command line. -std=c++17 is " "necessary only if your compiler is not C++17 compliant by default." msgstr "" "Observera att du måste omsluta anropet av pkg-config med " "grav accent (`). Grava accenter får skalet att exekvera kommandot inuti dem, " "och att använda kommandots utdata som en del av kommandoraden. Observera " "också att simple.cc måste komma före anropet av " "pkg-config på kommandoraden. -std=c++17 är endast nödvändigt om din kompilator inte följer C++17 som " "standard." #. (itstool) path: section/title #: C/index-in.docbook:391 #, fuzzy msgid "Headers and Linking" msgstr "Huvuden och länkning" #. (itstool) path: section/para #: C/index-in.docbook:393 msgid "" "Although we have shown the compilation command for the simple example, you " "really should use the Meson " "build system. The examples used in this book are included in the " "gtkmm-documentation package, with appropriate " "build files, so we won't show the build commands in future. The " "README file in gtkmm-documentation describes how to build the examples." msgstr "" "Även om vi visat kompileringskommandot för det enkla exemplet så bör du " "verkligen använda byggsystemet " "Meson. Exemplen som används i denna bok inkluderas i paketet " "gtkmm-documentation med lämpliga byggfiler, så vi " "kommer inte visa byggkommandona framöver. Filen README " "i gtkmm-documentation beskriver hur du bygger " "exemplen." #. (itstool) path: section/para #: C/index-in.docbook:401 msgid "" "To simplify compilation, we use pkg-config, which is " "present in all (properly installed) gtkmm " "installations. This program 'knows' what compiler switches are needed to " "compile programs that use gtkmm. The --" "cflags option causes pkg-config to output a " "list of include directories for the compiler to look in; the --" "libs option requests the list of libraries for the compiler to " "link with and the directories to find them in. Try running it from your " "shell-prompt to see the results on your system." msgstr "" "För att förenkla kompilering använder vi pkg-config som " "finns i alla (riktigt installerade) gtkmm-" "installationer. Det här programmet ”vet” vilka kompilatorflaggor som behövs " "för att kompilera program som använder gtkmm. " "Flaggan --cflags får pkg-config att " "mata ut en lista över inkluderingskataloger som kompilatorn ska titta i; " "flaggan --libs begär listan över bibliotek som " "kompilatorn ska länka med och katalogerna att hitta dem i. Försök köra den " "från din skalprompt för att se resultatet på ditt system." #. (itstool) path: section/para #: C/index-in.docbook:411 msgid "" "However, this is even simpler when using the dependency() function in a meson.build file with Meson. " "For instance:" msgstr "" "Detta är dock ännu lättare om du använder funktionen dependency() i en meson.build-fil med Meson. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:415 #, no-wrap msgid "gtkmm_dep = dependency('gtkmm-4.0', version: '>= 4.6.0')" msgstr "gtkmm_dep = dependency('gtkmm-4.0', version: '>= 4.6.0')" #. (itstool) path: section/para #: C/index-in.docbook:416 msgid "" "This checks for the presence of gtkmm and defines gtkmm_dep for use in your meson.build files. For " "instance:" msgstr "" "Detta kontrollerar närvaron av gtkmm och definierar gtkmm_dep för användning i dina meson.build-filer. Till " "exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:420 #, fuzzy, no-wrap msgid "" "exe_file = executable('my_program', 'my_source1.cc', 'my_source2.cc',\n" " dependencies: gtkmm_dep,\n" " win_subsystem: 'windows',\n" ")" msgstr "" "exe_file = executable('my_program', 'my_source1.cc', 'my_source2.cc',\n" " dependencies: gtkmm_dep,\n" " win_subsystem: 'windows',\n" ")" #. (itstool) path: section/para #: C/index-in.docbook:424 msgid "" "gtkmm-4.0 is the name of the current stable API. There are older APIs called " "gtkmm-2.4 and gtkmm-3.0 which install in parallel when they are available. " "There are several versions of gtkmm-2.4, such as gtkmm 2.10 and there are " "several versions of the gtkmm-3.0 API. Note that the API name does not " "change for every version because that would be an incompatible API and ABI " "break. There might be a future gtkmm-5.0 API which would install in parallel " "with gtkmm-4.0 without affecting existing applications." msgstr "" "gtkmm-4.0 är namnet på det aktuella stabila API:t. Det finns äldre API:er " "som heter gtkmm-2.4 och gtkmm-3.0 vilka installeras parallellt då de finns " "tillgängliga. Det finns flera versioner av gtkmm-2.4, som gtkmm 2.10, och " "det finns flera versioner av gtkmm-3.0-API:t. Observera att API-namnet inte " "ändras för varje version då det skulle vara ett inkompatibelt API- och ABI-" "brott. Det kan komma ett framtida gtkmm-5.0-API som då skulle gå installera " "parallellt med gtkmm-4.0 utan att påverka befintliga program." #. (itstool) path: section/para #: C/index-in.docbook:431 msgid "" "If you start by experimenting with a small application that you plan to use " "just for yourself, it's easier to start with a meson.build similar to the meson.build files in the Building applications " "chapter." msgstr "" "Om du börjar genom att experimentera med ett litet program som du bara " "tänker använda själv är det lättare att börja med en meson.build liknande meson.build-filerna i kapitlet Bygga program." #. (itstool) path: section/para #: C/index-in.docbook:436 msgid "" "If you use the older Autotools build system, see also the GNU site. It has " "more information about autoconf and automake. There are also some books describing " "Autotools: \"GNU Autoconf, Automake, and Libtool\" by Gary Vaughan et al. " "and \"Autotools, A Practitioner's Guide to GNU Autoconf, Automake, and " "Libtool\" by John Calcote." msgstr "" "Se även GNU:s webbplats om du använder det äldre Autotools-byggsystemet. Den " "har mer information om autoconf och automake. Det finns också några böcker som " "beskriver Autotools: ”GNU Autoconf, Automake, and Libtool” av Gary Vaughan " "med flera, och ”Autotools, A Practitioner's Guide to GNU Autoconf, Automake, " "and Libtool” av John Calcote." #. (itstool) path: section/title #: C/index-in.docbook:447 C/index-in.docbook:6571 msgid "Widgets" msgstr "Komponenter" #. (itstool) path: section/para #: C/index-in.docbook:449 #, fuzzy msgid "" "gtkmm applications consist of windows containing " "widgets, such as buttons and text boxes. In some other systems, widgets are " "called \"controls\". For each widget in your application's windows, there is " "a C++ object in your application's code. So you just need to call a method " "of the widget's class to affect the visible widget." msgstr "" "gtkmm-program består av fönster som innehåller " "komponenter, som knappar och textrutor. I några andra system kallas " "komponenter för ”kontroller”. För varje komponent i ditt programs fönster " "finns det ett C++-objekt i ditt programs kod. Så du behöver bara anropa en " "metod av komponentens klass för att påverka den synliga komponenten." #. (itstool) path: section/para #: C/index-in.docbook:450 #, fuzzy msgid "" "Widgets are arranged inside container widgets such as frames and notebooks, " "in a hierarchy of widgets within widgets. Some of these container widgets, " "such as Gtk::Grid, are not visible - they exist only " "to arrange other widgets. Here is some example code that adds 2 " "Gtk::Button widgets to a Gtk::Box container widget:" msgstr "" "Komponenter arrangeras inuti behållarkomponenter som ramar och " "anteckningsblock, i en hierarki av komponenter i komponenter. Vissa av dessa " "behållarkomponenter, som Gtk::Grid, är inte synliga - " "de existerar bara för att arrangera andra komponenter. Här är exempelkod som " "lägger till två Gtk::Button-komponenter till en " "Gtk::Box-behållarkomponent: <_:programlisting-1/> och " "här är hur du lägger till denna Gtk::Box som " "innehåller knapparna till en Gtk::Frame som har en " "synlig ram och titel: <_:programlisting-2/>" #. (itstool) path: section/programlisting #: C/index-in.docbook:452 #, no-wrap msgid "" "m_box.append(m_Button1);\n" "m_box.append(m_Button2);" msgstr "" "m_box.append(m_Button1);\n" "m_box.append(m_Button2);" #. (itstool) path: section/para #: C/index-in.docbook:454 #, fuzzy msgid "" "and here is how to add the Gtk::Box, containing those " "buttons, to a Gtk::Frame, which has a visible frame " "and title:" msgstr "" "I detta steg använder vi en Gtk::Builder-instans för " "att associera en Gtk::Builder-ui-fil med vår " "programfönsterklass." #. (itstool) path: section/programlisting #: C/index-in.docbook:456 #, no-wrap msgid "m_frame.set_child(m_box);" msgstr "m_frame.set_child(m_box);" #. (itstool) path: section/para #: C/index-in.docbook:457 msgid "" "Most of the chapters in this book deal with specific widgets. See the Container Widgets section for " "more details about adding widgets to container widgets." msgstr "" "De flesta kapitel i denna bok hanterar specifika komponenter. Se avsnittet " "Behållarkomponenter för " "mer detaljer om att lägga till komponenter till behållarkomponenter." #. (itstool) path: section/para #: C/index-in.docbook:461 #, fuzzy #| msgid "" #| "Although you can specify the layout and appearance of windows and widgets " #| "with C++ code, you will probably find it more convenient to design your " #| "user interfaces with Glade and load them at runtime " #| "with Gtk::Builder. See the Glade and Gtk::Builder chapter." msgid "" "Although you can specify the layout and appearance of windows and widgets " "with C++ code, you will probably find it more convenient to design your user " "interfaces with .ui XML files and " "load them at runtime with Gtk::Builder. See the Gtk::Builder chapter." msgstr "" "Även om du kan ange layouten och utseendet för fönster och komponenter med C+" "+-kod så kommer du troligen finna det mer bekvämt att designa dina " "användargränssnitt med Glade och läsa in dem vid körning " "med Gtk::Builder. Se kapitlet Glade och Gtk::Builder." #. (itstool) path: section/para #: C/index-in.docbook:467 #, fuzzy msgid "" "Although gtkmm widget instances have lifetimes " "and scopes just like those of other C++ classes, gtkmm has an optional time-saving feature that you will see in some " "of the examples. The Gtk::make_managed() allows you to " "create a new widget and state that it will become owned by the container " "into which you place it. This allows you to create the widget, add it to the " "container and not be concerned about deleting it, since that will occur when " "the parent container (which may itself be managed) is deleted. You can learn " "more about gtkmm memory management techniques in " "the Memory Management chapter." msgstr "" "Även om gtkmm-komponentinstanser har livslängder " "och räckvidder precis som de hos andra C++ classes, så har " "gtkmm en valfri tidssparande funktion som du " "kommer se i några av exemplen. Gtk::make_managed() " "låter dig skapa en ny komponent och ange att den kommer att ägas av " "behållaren som du placerar den i. Detta låter dig skapa komponenten, lägga " "till den i behållaren och inte behöva bry dig om att ta bort den, då det " "kommer att inträffa då den överordnade behållaren (som i sin tur kan vara " "hanterad) tas bort. Du kan lära dig mer om minneshanteringstekniker för " "gtkmm i kapitlet Minneshantering." #. (itstool) path: section/title #. (itstool) path: appendix/title #: C/index-in.docbook:481 C/index-in.docbook:5379 C/index-in.docbook:5622 #: C/index-in.docbook:8879 msgid "Signals" msgstr "Signaler" #. (itstool) path: section/para #: C/index-in.docbook:483 #, fuzzy msgid "" "gtkmm, like most GUI toolkits, is event-" "driven. When an event occurs, such as the press of a mouse " "button, the appropriate signal will be emitted by the " "Widget that was pressed. Each Widget has a different set of signals that it " "can emit. To make a button click result in an action, we set up a " "signal handler to catch the button's \"clicked\" signal." msgstr "" "gtkmm är som de flesta GUI-verktygslådor " "händelsedrivet. När en händelse inträffar, som ett " "tryck på en musknapp, så kommer den lämpliga signalen avges av den komponent som trycktes ned. Varje komponent har olika " "uppsättningar signaler som den kan avge. För att få ett musklick att leda " "till en åtgärd konfigurerar vi en signalhanterare som " "fångar knappens ”clicked”-signal." #. (itstool) path: section/para #: C/index-in.docbook:490 msgid "" "gtkmm uses the libsigc++ library to implement " "signals. Here is an example line of code that connects a Gtk::Button's " "\"clicked\" signal with a signal handler called \"on_button_clicked\":" msgstr "" "gtkmm använder libsigc++-biblioteket för att " "implementera signaler. Här är en exempelrad kod som ansluter ”clicked”-" "signalen för en Gtk::Button med en signalhanterare som heter " "”on_button_clicked”:" #. (itstool) path: section/programlisting #: C/index-in.docbook:492 #, no-wrap msgid "" "m_button1.signal_clicked().connect( sigc::mem_fun(*this,\n" " &HelloWorld::on_button_clicked) );" msgstr "" "m_button1.signal_clicked().connect( sigc::mem_fun(*this,\n" " &HelloWorld::on_button_clicked) );" #. (itstool) path: section/para #: C/index-in.docbook:495 msgid "" "For more detailed information about signals, see the appendix." msgstr "" "Se bilagan för mer detaljerad " "information om signaler." #. (itstool) path: section/para #: C/index-in.docbook:496 msgid "" "For information about implementing your own signals rather than just " "connecting to the existing gtkmm signals, see the " "appendix." msgstr "" "För mer information om att implementera dina egna signaler snarare än att " "bara ansluta till de befintliga gtkmm-signalerna, " "se bilagan." #. (itstool) path: section/title #: C/index-in.docbook:502 msgid "Glib::ustring" msgstr "Glib::ustring" #. (itstool) path: section/para #: C/index-in.docbook:504 msgid "" "You might be surprised to learn that gtkmm " "doesn't use std::string in its interfaces. Instead it " "uses Glib::ustring, which is so similar and " "unobtrusive that you could actually pretend that each Glib::" "ustring is a std::string and ignore the " "rest of this section. But read on if you want to use languages other than " "English in your application." msgstr "" "Det kanske förvånar dig att höra att gtkmm inte " "använder std::string i sina gränssnitt. I stället " "använder det Glib::ustring vilket är snarlikt och " "inte gör något väsen av sig, så du skulle kunna låtsas att varje " "Glib::ustring är en std::string och ignorera resten av detta avsnitt. Men läs vidare om du vill " "använda andra språk än engelska i ditt program." #. (itstool) path: section/para #: C/index-in.docbook:505 #, fuzzy #| msgid "" #| "std::string uses 8 bits per character, but 8 bits aren't enough to encode " #| "languages such as Arabic, Chinese, and Japanese. Although the encodings " #| "for these languages have been specified by the Unicode Consortium, the C and C++ languages do " #| "not yet provide any standardised Unicode support for UTF-8 encoding. GTK " #| "and GNOME chose to implement Unicode using UTF-8, and that's what is " #| "wrapped by Glib::ustring. It provides almost exactly the same interface " #| "as std::string, along with automatic conversions to and from std::string." msgid "" "std::string uses 8 bits per character, but 8 bits aren't enough to encode " "languages such as Arabic, Chinese, and Japanese. Although the encodings for " "these languages have been specified by the Unicode Consortium, the C and C++ languages do not yet " "provide any standardized Unicode support for UTF-8 encoding. GTK and GNOME " "chose to implement Unicode using UTF-8, and that's what is wrapped by Glib::" "ustring. It provides almost exactly the same interface as std::string, along " "with automatic conversions to and from std::string." msgstr "" "std::string använder 8 bitar per tecken, men 8 bitar räcker inte till för " "att koda språk som arabiska, kinesiska och japanska. Även om kodningarna för " "dessa språk har angivits av Unicode Consortium så tillhandahåller språken C och C++ ännu inte " "något standardiserat Unicode-stöd för UTF-8-kodning. GTK och GNOME valde att " "implementera Unicode med UTF-8, och det är vad som är omslaget av Glib::" "ustring. Det tillhandahåller nästan exakt samma gränssnitt som std::string, " "tillsammans med automatiska konverteringar till och från std::string." #. (itstool) path: section/para #: C/index-in.docbook:510 msgid "" "One of the benefits of UTF-8 is that you don't need to use it unless you " "want to, so you don't need to retrofit all of your code at once. " "std::string will still work for 7-bit ASCII strings. " "But when you try to localize your application for languages like Chinese, " "for instance, you will start to see strange errors, and possible crashes. " "Then all you need to do is start using Glib::ustring " "instead." msgstr "" "En av fördelarna med UTF-8 är att du inte behöver använda det om du inte " "vill, så du behöver inte skriva om all din kod på en gång. std::" "string kommer fortfarande fungera för 7-bitars ASCII-strängar. " "Men när du försöker lokalanpassa ditt program för språk som exempelvis " "kinesiska kommer du börja se märkliga fel och möjligen krascher. Då är allt " "du behöver göra att börja använda Glib::ustring i " "stället." #. (itstool) path: section/para #: C/index-in.docbook:511 msgid "" "Note that UTF-8 isn't compatible with 8-bit encodings like ISO-8859-1. For " "instance, German umlauts are not in the ASCII range and need more than 1 " "byte in the UTF-8 encoding. If your code contains 8-bit string literals, you " "have to convert them to UTF-8 (e.g. the Bavarian greeting \"Grüß Gott\" " "would be \"Gr\\xC3\\xBC\\xC3\\x9F Gott\")." msgstr "" "Observera att UTF-8 inte är kompatibelt med 8-bitars kodningar som " "ISO-8859-1. Exempelvis finns tyska omljud inte i ASCII-intervallet och " "behöver mer än 1 byte i UTF-8-kodningen. Om din kod innehåller 8-bitars " "stränglitteraler behöver du konvertera dem till UTF-8 (t.ex. skulle den " "bayerska hälsningen ”Grüß Gott” bli ”Gr\\xC3\\xBC\\xC3\\x9F Gott”)." #. (itstool) path: section/para #: C/index-in.docbook:512 msgid "" "You should avoid C-style pointer arithmetic, and functions such as strlen(). " "In UTF-8, each character might need anywhere from 1 to 6 bytes, so it's not " "possible to assume that the next byte is another character. Glib::" "ustring worries about the details of this for you so you can use " "methods such as Glib::ustring::substr() while still thinking in terms of " "characters instead of bytes." msgstr "" "Du bör undvika pekararitmetik av C-stil och funktioner som strlen(). I UTF-8 " "kan varje tecken behöva vad som helst från 1 till 6 byte, så det är inte " "möjligt att anta att nästa byte är ett nytt tecken. Glib::" "ustring sköter detaljerna kring detta åt dig, så du kan använda " "metoder som Glib::ustring::substr() och tänka på antal tecken i stället för " "byte." #. (itstool) path: section/para #: C/index-in.docbook:514 msgid "" "Unlike the Windows UCS-2 Unicode solution, this does not require any special " "compiler options to process string literals, and it does not result in " "Unicode executables and libraries which are incompatible with ASCII ones." msgstr "" "Till skillnad från Windows Unicode-lösning UCS-2 så kräver detta inte några " "ytterligare kompilatorflaggor för att behandla stränglitteraler, och det " "resulterar inte i körbara Unicode-program och bibliotek som är inkompatibla " "med de som använder ASCII." #. (itstool) path: section/para #: C/index-in.docbook:516 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:518 msgid "" "See the Internationalization section for information about providing the UTF-8 string literals." msgstr "" "Se avsnittet Internationalisering för information om hur du " "tillhandahåller UTF-8-stränglitteralerna." #. (itstool) path: section/title #: C/index-in.docbook:523 msgid "Mixing C and C++ APIs" msgstr "Blanda C- och C++-API:er" #. (itstool) path: section/para #: C/index-in.docbook:525 msgid "" "You can use C APIs which do not yet have convenient C++ interfaces. It is " "generally not a problem to use C APIs from C++, and gtkmm helps by providing access to the underlying C object, and " "providing an easy way to create a C++ wrapper object from a C object, " "provided that the C API is also based on the GObject " "system." msgstr "" "Du kan använda C-API:er som inte ännu har praktiska C++-gränssnitt. Det är " "allmänt inte ett problem att använda C-API:er från C++, och " "gtkmm hjälper till genom att ge åtkomst till det " "underliggande C-objektet, och tillhandahåller ett lätt sätt att skapa ett C+" "+-omslagsobjekt från ett C-objekt, givet att C-API:t också är baserat på " "GObject-systemet." #. (itstool) path: section/para #: C/index-in.docbook:531 #, fuzzy msgid "" "To use a gtkmm instance with a C function that " "requires a C GObject instance, use the C++ instance’s " "gobj() function to obtain a pointer to the underlying C " "instance. For example:" msgstr "" "För att använda en gtkmm-instans med en C-" "funktion som kräver en GObject-instans i C, använder " "du C++-instansens gobj()-funktion för att erhålla en " "pekare till den underliggande C-instansen. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:536 #, fuzzy, no-wrap msgid "" "\n" "Gtk::Button button(\"example\");\n" "gtk_button_do_something_that_gtkmm_cannot(button.gobj());\n" msgstr "" "\n" "Gtk::Button button(\"exempel\");\n" "gtk_button_do_something_that_gtkmm_cannot(button.gobj());\n" #. (itstool) path: section/para #: C/index-in.docbook:541 #, fuzzy msgid "" "To obtain a gtkmm instance from a C " "GObject instance, use one of the many overloaded " "Glib::wrap() functions. The C instance’s reference " "count is not incremented, unless you set the optional take_copy argument to true. For example:" msgstr "" "För att erhålla en gtkmm-instans från en " "GObject-instans i C, använd en av de många " "överlagrade Glib::wrap()-funktionerna. C-instansens " "referensantal ökas inte, om du inte ställer in det valfria argumentet " "take_copy till true. Till exempel: " "<_:programlisting-1/> C++-omslaget ska explicit tas bort om <_:" "itemizedlist-2/> Glib::wrap() binder C- och C++-" "instanserna till varandra. Ta inte bort C++-instansen innan du vill att C-" "instansen ska dö." #. (itstool) path: section/programlisting #: C/index-in.docbook:547 #, fuzzy, no-wrap msgid "" "\n" "GtkButton* cbutton = get_a_button();\n" "Gtk::Button* button = Glib::wrap(cbutton);\n" "button->set_label(\"Now I speak C++ too!\");\n" msgstr "" "\n" "GtkButton* cbutton = get_a_button();\n" "Gtk::Button* button = Glib::wrap(cbutton);\n" "button->set_label(\"Nu talar jag även C++!\");\n" #. (itstool) path: listitem/para #: C/index-in.docbook:554 msgid "" "it's a widget or other class that inherits from Gtk::Object, and" msgstr "" "det är en komponent eller annan klass som ärver frånGtk::Object, och" #. (itstool) path: listitem/para #: C/index-in.docbook:555 #, fuzzy msgid "" "the C instance has a floating reference when the wrapper is created, and" msgstr "C-instansen har en flytande referens när omslaget skapas, och" #. (itstool) path: listitem/para #: C/index-in.docbook:556 msgid "" "Gtk::manage() has not been called on it (which includes " "if it was created with Gtk::make_managed()), or" msgstr "" "Gtk::manage() inte har anropats på det (vilket " "inkluderar om det skapades med Gtk::make_managed()), " "eller" #. (itstool) path: listitem/para #: C/index-in.docbook:557 #, fuzzy msgid "" "Gtk::manage() was called on it, but it was never added " "to a parent." msgstr "" "Gtk::manage() anropades på det, men det aldrig lades " "till till en överordnad." #. (itstool) path: section/para #: C/index-in.docbook:552 msgid "" "The C++ wrapper shall be explicitly deleted if <_:itemizedlist-1/> " "Glib::wrap() binds the C and C++ instances to each " "other. Don't delete the C++ instance before you want the C instance to die." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:562 #, fuzzy msgid "" "In all other cases the C++ instance is automatically deleted when the last " "reference to the C instance is dropped. This includes all Glib::" "wrap() overloads that return a Glib::RefPtr." msgstr "" "I alla andra fall tas C++-instansen automatiskt bort när den sista " "referensen till C-instansen släpps. Detta inkluderar alla Glib::" "wrap()-överlagringar som returnerar en Glib::RefPtr." #. (itstool) path: section/title #: C/index-in.docbook:569 msgid "Hello World in gtkmm" msgstr "Hej världen i gtkmm" #. (itstool) path: section/para #: C/index-in.docbook:571 msgid "" "We've now learned enough to look at a real example. In accordance with an " "ancient tradition of computer science, we now introduce Hello World, a la " "gtkmm:" msgstr "" "Vi har nu lärt oss tillräckligt för att titta på ett riktigt exempel. Enligt " "en uråldrig tradition inom datavetenskap introducerar vi nu ”Hej världen”, " "på gtkmm-sätt:" #. (itstool) path: section/para #: C/index-in.docbook:576 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:578 msgid "" "Try to compile and run it before going on. You should see something like " "this:" msgstr "" "Försök kompilera och köra det innan du går vidare. Du bör se något i stil " "med detta:" #. (itstool) path: figure/title #: C/index-in.docbook:583 msgid "Hello World" msgstr "Hej världen" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:585 #, fuzzy msgctxt "_" msgid "" "external ref='figures/helloworld.png' md5='02f7e986e608661d5a1524ac5f0c0b2e'" msgstr "" "external ref='figures/helloworld.png' md5='02f7e986e608661d5a1524ac5f0c0b2e'" #. (itstool) path: section/para #: C/index-in.docbook:589 msgid "" "Pretty thrilling, eh? Let's examine the code. First, the " "HelloWorld class:" msgstr "" "Visst är det omvälvande? Låt oss utforska koden. Först har vi klassen " "HelloWorld:" #. (itstool) path: section/programlisting #: C/index-in.docbook:594 #, no-wrap msgid "" "class HelloWorld : public Gtk::Window\n" "{\n" "public:\n" " HelloWorld();\n" " ~HelloWorld() override;\n" "\n" "protected:\n" " //Signal handlers:\n" " void on_button_clicked();\n" "\n" " //Member widgets:\n" " Gtk::Button m_button;\n" "};" msgstr "" "class HelloWorld : public Gtk::Window\n" "{\n" "public:\n" " HelloWorld();\n" " ~HelloWorld() override;\n" "\n" "protected:\n" " //Signalhanterare:\n" " void on_button_clicked();\n" "\n" " //Medlemskomponenter:\n" " Gtk::Button m_button;\n" "};" # TODO: initialization #. (itstool) path: section/para #: C/index-in.docbook:608 #, fuzzy msgid "" "This class implements the \"Hello World\" window. It's derived from " "Gtk::Window, and has a single Gtk::Button as a member. We've chosen to use the constructor to do all of the " "initialization work for the window, including setting up the signals. Here " "it is, with the comments omitted:" msgstr "" "Denna klass implementerar ”Hej världen”-fönstret. Den härleds från " "Gtk::Window och har en ensam Gtk::Button som medlem. Vi har valt att låta konstruktorn gör allt " "initieringsjobb för fönstret, inklusive att konfigurera signalerna. Här är " "den utan kommentarer:" #. (itstool) path: section/programlisting #: C/index-in.docbook:617 #, no-wrap msgid "" "HelloWorld::HelloWorld()\n" ": m_button(\"Hello World\")\n" "{\n" " m_button.set_margin(10);\n" " m_button.signal_clicked().connect(sigc::mem_fun(*this,\n" " &HelloWorld::on_button_clicked));\n" " set_child(m_button);\n" "}" msgstr "" "HelloWorld::HelloWorld()\n" ": m_button(\"Hej världen\")\n" "{\n" " m_button.set_margin(10);\n" " m_button.signal_clicked().connect(sigc::mem_fun(*this,\n" " &HelloWorld::on_button_clicked));\n" " set_child(m_button);\n" "}" # TODO: initializer #. (itstool) path: section/para #: C/index-in.docbook:626 #, fuzzy #| msgid "" #| "Notice that we've used an initialiser statement to give the " #| "m_button object the label \"Hello World\"." msgid "" "Notice that we've used an initializer statement to give the " "m_button object the label \"Hello World\"." msgstr "" "Observera att vi har använt en initierarsats för att ge m_button-objektet etiketten ”Hej världen”." #. (itstool) path: section/para #: C/index-in.docbook:631 msgid "" "Next we call the Button's set_margin() method. This " "sets the amount of space around the button." msgstr "" "Härnäst anropar vi set_margin()-metoden för vår " "Button. Denna ställer in mängden utrymme runt knappen." #. (itstool) path: section/para #: C/index-in.docbook:636 #, fuzzy msgid "" "We then hook up a signal handler to m_button's " "clicked signal. This prints our friendly greeting to " "stdout." msgstr "" "Sedan kopplar vi ihop en signalhanterare med clicked-" "signalen för m_button. Detta skriver ut vår vänliga " "hälsning till stdout." #. (itstool) path: section/para #: C/index-in.docbook:641 #, fuzzy msgid "" "Next, we use the Window's set_child() method to put " "m_button in the Window. The set_child() method places the Widget in the Window." msgstr "" "Härnäst använder vi set_child()-metoden i Window " "för att sätta m_button i vårt Window. Metoden " "set_child() placerar komponenten i vårt Window." #. (itstool) path: section/para #: C/index-in.docbook:647 msgid "" "Now let's look at our program's main() function. Here " "it is, without comments:" msgstr "" "Låt oss nu titta på vårt programs main()-funktion. Här " "är den utan kommentarer:" #. (itstool) path: section/programlisting #: C/index-in.docbook:652 #, no-wrap msgid "" "int main(int argc, char* argv[])\n" "{\n" " auto app = Gtk::Application::create(\"org.gtkmm.example\");\n" " return app->make_window_and_run<HelloWorld>(argc, argv);\n" "}" msgstr "" "int main(int argc, char* argv[])\n" "{\n" " auto app = Gtk::Application::create(\"org.gtkmm.example\");\n" " return app->make_window_and_run<HelloWorld>(argc, argv);\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:658 msgid "" "First we instantiate an object stored in a Glib::RefPtr smartpointer called app. This is of type " "Gtk::Application. Every gtkmm program must have one of these." msgstr "" "Först instansierar vi ett objekt som lagras i en Glib::RefPtr-smartpekare som heter app. Detta är av typen " "Gtk::Application. Varje gtkmm-program måste ha ett av dessa." #. (itstool) path: section/para #: C/index-in.docbook:663 #, fuzzy msgid "" "Next we call make_window_and_run() which creates an " "object of our HelloWorld class, shows that Window and " "starts the gtkmm event loop. " "During the event loop gtkmm idles, waiting for " "actions from the user, and responding appropriately. When the user closes " "the Window, make_window_and_run() will return, " "causing our main() function to return. The application " "will then finish." msgstr "" "Härnäst anropar vi make_window_and_run() vilket " "skapar ett objekt av vår HelloWorld-klass, visar " "detta Window och startar gtkmm:s " "händelseslinga. Under händelseslingan är " "gtkmm inaktivt, väntar på åtgärder från " "användaren, och svarar på lämpligt sätt. När användaren stänger detta Window " "kommer make_window_and_run() returnera, vilket får " "vår main()-funktion att returnera. Programmet avslutas " "då." #. (itstool) path: section/para #: C/index-in.docbook:672 msgid "" "Like the simple example we showed earlier, this Hello World program does not " "use the command-line parameters." msgstr "" "Som det enkla exempel vi visade tidigare så använder detta ”Hej världen”-" "program inte kommandoradsparametrarna." #. (itstool) path: chapter/title #: C/index-in.docbook:681 msgid "Changes in gtkmm 3" msgstr "Ändringar i gtkmm 3" #. (itstool) path: chapter/para #: C/index-in.docbook:683 msgid "" "gtkmm-3.0 is an old version of the " "gtkmm API that installs in parallel with the " "still older gtkmm-2.4 API and the new " "gtkmm-4.0 API. The last version of the " "gtkmm-2.4 API was gtkmm 2.24. gtkmm 3 has no major " "fundamental differences to gtkmm 2 but does make " "several small changes that were not possible while maintaining binary " "compatibility. If you never used the gtkmm-2.4 " "API then you can safely ignore this chapter." msgstr "" "gtkmm-3.0 är en gammal version av " "gtkmm-API:t som installeras parallellt med det " "ännu äldre gtkmm-2.4-API:t och det nya " "gtkmm-4.0-API:t. Den senaste versionen av " "gtkmm-2.4-API:t var gtkmm 2.24. gtkmm 3 har inga större " "fundamentala skillnader mot gtkmm 2 men gör flera " "små ändringar som inte var möjliga att göra samtidigt som binär " "kompatibilitet behölls. Om du aldrig använt gtkmm-2.4-API:t kan du lugnt ignorera detta kapitel." #. (itstool) path: chapter/para #: C/index-in.docbook:685 #, fuzzy msgid "" "gtkmm 3's library is called " "libgtkmm-3.0 rather than libgtkmm-2.4 " "and installs its headers in a similarly-versioned directory, so your pkg-" "config check should ask for gtkmm-3.0 rather than " "gtkmm-2.4." msgstr "" "Biblioteket för gtkmm 3 kallas " "libgtkmm-3.0 snarare än libgtkmm-2.4 " "och installerar sina huvuden i en katalog med liknande version, så din pkg-" "config-kontroll ska fråga efter gtkmm-3.0 snarare än " "gtkmm-2.4." #. (itstool) path: chapter/para #: C/index-in.docbook:687 msgid "gtkmm 3 added some new classes:" msgstr "gtkmm 3 lade till några nya klasser:" #. (itstool) path: listitem/simpara #: C/index-in.docbook:690 msgid "" "Gtk::AppChooser, Gtk::AppChooserButton, Gtk::AppChooserDialog allow the user to " "select an installed application to open a particular type of content." msgstr "" "Gtk::AppChooser, Gtk::AppChooserButton och Gtk::AppChooserDialog låter användaren " "välja ett installerat program som ska öppna en viss typ av innehåll." #. (itstool) path: listitem/simpara #: C/index-in.docbook:691 msgid "" "Gtk::Grid is a new container widget that will " "eventually replace Gtk::Box and Gtk::" "Table. It arranges its children according to properties of those " "children rather than its own layout details." msgstr "" "Gtk::Grid är en ny behållarkomponent som med tiden " "kommer ersätta Gtk::Box och Gtk::Table. Den arrangerar sina underliggande komponenter enligt " "komponenternas egenskaper snarare än sina egna layoutdetaljer." #. (itstool) path: listitem/simpara #: C/index-in.docbook:692 msgid "" "Gtk::Switch displays On/Off states more explicitly " "than Gtk::CheckButton. It may be useful, for " "instance, when allowing users to activate hardware." msgstr "" "Gtk::Switch visar På/Av-tillstånd tydligare än " "Gtk::CheckButton. Det kan exempelvis vara användbart " "när användare tillåts aktivera hårdvara." #. (itstool) path: chapter/para #: C/index-in.docbook:695 msgid "" "gtkmm 3 also made several small changes to the " "API, which you will probably encounter when porting code that used " "gtkmm-2.4. Here is a short list:" msgstr "" "gtkmm 3 gjorde också flera små ändringar till API:" "t som du troligen kommer stöta på när du porterar kod som använt " "gtkmm-2.4. Här är en kort lista:" #. (itstool) path: listitem/simpara #: C/index-in.docbook:700 #, fuzzy msgid "" "Gtk::CellLayout, used by Gtk::IconView, Gtk::TreeView::Column and Gtk::" "ComboBox, now has a Gtk::CellArea which " "can be used to specify more details of how the CellRenderers are arranged and aligned." msgstr "" "Gtk::CellLayout som används av Gtk::" "IconView, Gtk::TreeView::Column och " "Gtk::ComboBox har nu en Gtk::CellArea som kan användas för att ange mer detaljer på hur " "CellRenderer-renderarna arrangeras och justeras." #. (itstool) path: listitem/simpara #: C/index-in.docbook:702 #, fuzzy msgid "" "Gtk::ComboBox now derives from CellLayout, allowing easier layout and " "alignment of its Gtk::CellRenderers." msgstr "" "Gtk::ComboBox härleds nu från CellLayout, vilket tillåter lättare layout och " "justering av dess Gtk::CellRenderer-renderare." #. (itstool) path: listitem/simpara #: C/index-in.docbook:704 msgid "" "Gtk::Adjustment and IconSet " "and Gdk::Cursor are now used via Glib::" "RefPtr." msgstr "" "Gtk::Adjustment, IconSet och " "Gdk::Cursor används nu via Glib::RefPtr." #. (itstool) path: listitem/simpara #: C/index-in.docbook:706 msgid "" "Gtk::Box, Gtk::ButtonBox, " "Gtk::IconView, Gtk::Paned, " "Gtk::ProgressBar, Gtk::ScaleButton, Gtk::Scrollbar and Gtk::" "Separator now derive from Gtk::Orientable, allowing their orientation (vertical or horizontal) to be " "specified without requiring the use of a derived class such as " "Gtk::HBox." msgstr "" "Gtk::Box, Gtk::ButtonBox, " "Gtk::IconView, Gtk::Paned, " "Gtk::ProgressBar, Gtk::ScaleButton, Gtk::Scrollbar och Gtk::" "Separator härleds nu från Gtk::Orientable " "vilket låter deras orientering (vertikal eller horisontell) anges utan att " "kräva användningen av en härledd klass som Gtk::HBox." #. (itstool) path: listitem/simpara #: C/index-in.docbook:709 #, fuzzy msgid "" "Gtk::IconView, Gtk::TextView, " "Gtk::TreeView and other widgets derive from " "Scrollable instead of having their own methods such as " "get_vadjustment() and instead of having their own " "set_scroll_adjustments signal." msgstr "" "Gtk::IconView, Gtk::TextView, " "Gtk::TreeView och andra komponenter härleds från " "Scrollable i stället för att ha egna metoder som " "get_vadjustment() och i stället för att ha sin egen " "set_scroll_adjustments-signal." #. (itstool) path: listitem/simpara #: C/index-in.docbook:711 #, fuzzy msgid "" "Gtk::Style and Gtk::Rc were " "removed, replaced by Gtk::StyleContext, and " "Gtk::StyleProviders, such as Gtk::" "CssProvider." msgstr "" "Gtk::Style och Gtk::Rc togs " "bort, ersatta av Gtk::StyleContext och olika " "Gtk::StyleProvider, som Gtk::CssProvider." #. (itstool) path: listitem/simpara #: C/index-in.docbook:713 msgid "" "Widget::on_expose_event() was replaced by Widget::on_draw(), which assumes " "that cairomm is used for drawing, via the provided Cairo::" "Context and does not require you to call Cairo::" "Context::clip()." msgstr "" "Widget::on_expose_event() ersattes av Widget::on_draw(), vilket antar att " "cairomm används för ritning genom tillhandahållen Cairo::Context och kräver inte att du anropar Cairo::Context::" "clip()." #. (itstool) path: listitem/simpara #: C/index-in.docbook:715 #, fuzzy msgid "" "Gdk::RGBA replaces Color, " "adding an alpha component for opacity. Colormap was " "removed, along with its awkward use to allocate colors." msgstr "" "Gdk::RGBA ersätter Color, " "vilket lägger till en alfakomponent för opacitet. Colormap togs bort, tillsammans med sin klumpiga användning för att " "allokera färger." # TODO: favor #. (itstool) path: listitem/simpara #: C/index-in.docbook:717 #, fuzzy #| msgid "" #| "Gdk::Pixmap and Gdk::Bitmap " #| "were removed in favour of Gdk::Pixbuf." msgid "" "Gdk::Pixmap and Gdk::Bitmap " "were removed in favor of Gdk::Pixbuf." msgstr "" "Gdk::Pixmap och Gdk::Bitmap " "togs bort till förmån för Gdk::Pixbuf." #. (itstool) path: listitem/simpara #: C/index-in.docbook:719 msgid "" "Gdk::Drawable was removed, with its methods moving " "into Gdk::Window." msgstr "" "Gdk::Drawable togs bort, dess metoder har flyttat " "till Gdk::Window." #. (itstool) path: listitem/simpara #: C/index-in.docbook:721 #, fuzzy msgid "" "We now use std::vector in several methods instead of the intermediate " "*Handle types to make the API clearer." msgstr "" "Vi använder nu std::vector i flera metoder i stället för mellanliggande " "*Handle-typer för att göra API:t tydligare." #. (itstool) path: chapter/para #: C/index-in.docbook:726 msgid "" "All deprecated API was removed in gtkmm 3.0, " "though there have been new deprecations in later gtkmm 3.x versions." msgstr "" "Alla föråldrade API:er togs bort i gtkmm 3.0, men " "nya föråldringar har gjorts i senare gtkmm 3.x-" "versioner." #. (itstool) path: chapter/para #: C/index-in.docbook:728 #, fuzzy msgid "" "As a first step to porting your source code to gtkmm-3.0 you should probably ensure that your application builds " "with the deprecated gtkmm-2.4 API disabled, by " "defining macro such as GTKMM_DISABLE_DEPRECATED. There are some autotools " "macros that can help with this by defining them optionally at build time. " "See the gtkmm 3 porting wiki page for more details." msgstr "" "Som ett första steg för att portera din källkod till gtkmm-3.0 bör du troligen säkerställa att ditt program går bygga med " "det föråldrade gtkmm-2.4-API:t inaktiverat, genom " "att definiera makron som GTKMM_DISABLE_DEPRECATED. Det finns några autotools-" "makron som kan hjälpa till med detta genom att valfritt definiera dem vid " "byggtid. Se wikisidan för portering till gtkmm 3 för mer " "detaljer." #. (itstool) path: chapter/title #: C/index-in.docbook:733 msgid "" "Changes in gtkmm-4.0 and " "glibmm-2.68" msgstr "" "Ändringar i gtkmm-4.0 och " "glibmm-2.68" #. (itstool) path: chapter/para #: C/index-in.docbook:735 msgid "" "gtkmm-4.0 is a new version of the " "gtkmm API that installs in parallel with the " "older gtkmm-2.4 and gtkmm-3.0 APIs. The last version of the gtkmm-3.0 API is gtkmm 3.24. " "gtkmm 4 has no major fundamental differences to " "gtkmm 3 but does make several changes (both small " "and large ones) that were not possible while maintaining binary " "compatibility. If you never used the gtkmm-3.0 " "API then you can safely ignore this chapter." msgstr "" "gtkmm-4.0 är en ny version av gtkmm-API:t som installeras parallellt med de äldre API:erna " "gtkmm-2.4 och gtkmm-3.0. Den senaste versionen av gtkmm-3.0-API:t är gtkmm 3.24. " "gtkmm 4 har inga större fundamentala skillnader " "mot gtkmm 3 men gör flera ändringar (både stora " "och små) som inte var möjliga att göra samtidigt som binär kompatibilitet " "behölls. Om du aldrig använt gtkmm-3.0-API:t kan " "du lugnt ignorera detta kapitel." #. (itstool) path: chapter/para #: C/index-in.docbook:743 #, fuzzy msgid "" "gtkmm 4's library is called " "libgtkmm-4.0 rather than libgtkmm-3.0 " "and installs its headers in a similarly-versioned directory, so your " "pkg-config check should ask for " "gtkmm-4.0 rather than gtkmm-3.0." msgstr "" "Biblioteket för gtkmm 4 kallas " "libgtkmm-4.0 snarare än libgtkmm-3.0 " "och installerar sina huvuden i en katalog med liknande version, så din " "pkg-config-kontroll ska fråga efter " "gtkmm-4.0 snarare än gtkmm-3.0." #. (itstool) path: chapter/para #: C/index-in.docbook:749 #, fuzzy msgid "" "gtkmm-4.0 is used in combination with " "glibmm-2.68, which sets the global locale for " "your program. The older glibmm-2.4 does not do " "that, and gtkmm-3.0 does it only to some extent. " "What this means is briefly that if your gtkmm-3.0 " "program contains a call to std::locale::global(std::locale(\"\")), you can probably remove it. If you don't want " "glibmm or gtkmm to set " "the global locale for you, you should add a call to Glib::" "set_init_to_users_preferred_locale(false) before any call to " "Glib::init() or Gtk::Application::create(). See the glibmm " "reference." msgstr "" "gtkmm-4.0 används i kombination med " "glibmm-2.68, vilket ställer in den globala " "lokalen för ditt program. Det äldre glibmm-2.4 " "gör inte det, och gtkmm-3.0 gör det bara till " "viss del. Vad detta betyder är helt kort att om ditt gtkmm-3.0-program innehåller ett anrop till std::locale::" "global(std::locale(\"\")) så kan du troligen ta bort det. Om du " "inte vill att glibmm eller gtkmm ska ställa in den globala lokalen åt dig så ska du lägga till " "ett anrop till Glib::set_init_to_users_preferred_locale(false) före anrop Glib::init() eller " "Gtk::Application::create()." #. (itstool) path: chapter/para #: C/index-in.docbook:761 msgid "" "There are lots and lots of differences between gtkmm-3.0 and gtkmm-4.0. The following " "lists are not complete." msgstr "" "Det finns massor av skillnader mellan gtkmm-3.0 " "och gtkmm-4.0. Följande listor är inte " "fullständiga." #. (itstool) path: chapter/para #: C/index-in.docbook:764 msgid "" "There are some important behavioural changes, to which you must adapt when " "migrating:" msgstr "" #. (itstool) path: listitem/simpara #: C/index-in.docbook:767 msgid "" "Whereas in gtkmm-3.0, destruction of a non-" "managed C++ widget wrapper caused the wrapped GtkWidget to be destroyed, " "changes in GTK4 mean that in gtkmm-4.0 this canʼt " "always be the case. GTK4 has no uniform way to remove a widget from a " "parent, as GTK3 did with Gtk::Container::remove(), " "so gtkmm-4.0 canʼt do the removal for you as " "gtkmm-3.0 did. Hence, if a non-managed C++ widget " "instance is destructed while the widget is a child of another, " "gtkmm-4.0 wonʼt remove it from the parent, the " "parent retains a ref that stops the child being disposed, and the GtkWidget " "stays alive. The end result is that to destroy a non-managed widget with its " "C++ wrapper you must first remove it from its parent (however that parent " "allows) so the C++ wrapperʼs dtor can drop the final reference." msgstr "" #. (itstool) path: chapter/para #: C/index-in.docbook:780 msgid "" "Some new classes were added in gtkmm 4 and " "glibmm 2.68:" msgstr "" "Några nya klasser lades till i gtkmm 4 och " "glibmm 2.68:" #. (itstool) path: listitem/simpara #: C/index-in.docbook:782 msgid "" "Glib::ExtraClassInit and Gtk::Snapshot: These classes are needed only for writing custom widgets. See " "the Custom Widgets section." msgstr "" "Glib::ExtraClassInit och Gtk::Snapshot: Dessa klasser behövs endast för att skriva anpassade " "komponenter. Se avsnittet Anpassade " "komponenter." #. (itstool) path: listitem/simpara #: C/index-in.docbook:785 msgid "" "Gtk::EventControllerKey, Gtk::" "EventControllerMotion, Gtk::EventControllerScroll and Gtk::GestureStylus" msgstr "" "Gtk::EventControllerKey, Gtk::" "EventControllerMotion, Gtk::EventControllerScroll och Gtk::GestureStylus" #. (itstool) path: listitem/simpara #: C/index-in.docbook:788 msgid "" "Gdk::Paintable, Gdk::Texture, " "Gtk::Picture and Gtk::WidgetPaintable" msgstr "" "Gdk::Paintable, Gdk::Texture, " "Gtk::Picture och Gtk::WidgetPaintable" #. (itstool) path: listitem/simpara #: C/index-in.docbook:791 msgid "" "Gdk::Window has been renamed to Gdk::" "Surface. (Gtk::Window keeps its name.)" msgstr "" "Gdk::Window har bytt namn till Gdk::" "Surface. (Gtk::Window behåller sitt namn.)" #. (itstool) path: listitem/simpara #: C/index-in.docbook:793 msgid "" "Gdk::DrawContext and Gdk::CairoContext are new. Gdk::DrawingContext has been " "removed." msgstr "" "Gdk::DrawContext och Gdk::CairoContext är nya. Gdk::DrawingContext har tagits " "bort." #. (itstool) path: listitem/simpara #: C/index-in.docbook:795 msgid "" "Gtk::Clipboard has been replaced by the new " "Gdk::Clipboard." msgstr "" "Gtk::Clipboard har ersatts av den nya Gdk::" "Clipboard." #. (itstool) path: listitem/simpara #: C/index-in.docbook:797 msgid "" "Gdk::DragContext has been split into Gdk::" "Drag and Gdk::Drop." msgstr "" "Gdk::DragContext har delats upp i Gdk::" "Drag och Gdk::Drop." #. (itstool) path: chapter/para #: C/index-in.docbook:801 msgid "" "There have also been several changes to the API, which you will probably " "encounter when porting code that used gtkmm-3.0 " "and glibmm-2.4. Here is a short list:" msgstr "" "Det har också skett flera ändringar till API:t, vilket du troligen kommer " "stöta på när du porterar kod som använt gtkmm-3.0 " "och glibmm-2.4. Här är en kort lista:" #. (itstool) path: listitem/simpara #: C/index-in.docbook:805 msgid "A C++17 compiler is required." msgstr "En C++17-kompilator krävs." #. (itstool) path: listitem/simpara #: C/index-in.docbook:806 msgid "" "Gtk::Button, Gtk::ToolButton, " "Gtk::MenuItem and Gtk::Switch " "implement the Gtk::Actionable interface instead of " "the removed Gtk::Activatable interface." msgstr "" "Gtk::Button, Gtk::ToolButton, " "Gtk::MenuItem och Gtk::Switch " "implementerar Gtk::Actionable-gränssnittet i stället " "för det borttagna Gtk::Activatable-gränssnittet." #. (itstool) path: listitem/simpara #: C/index-in.docbook:810 msgid "" "Gtk::FontButton implements the Gtk::" "FontChooser interface." msgstr "" "Gtk::FontButton implementerar gränssnittet " "Gtk::FontChooser." #. (itstool) path: listitem/simpara #: C/index-in.docbook:811 #, fuzzy msgid "" "Gtk::Widget: The get_preferred_*_vfunc()s have been replaced by measure_vfunc(). " "This change only affects custom widgets." msgstr "" "Gtk::Widget: De olika " "get_preferred_*_vfunc() har ersatts med " "measure_vfunc(). Denna ändring påverkar bara " "anpassade komponenter." #. (itstool) path: listitem/simpara #: C/index-in.docbook:814 #, fuzzy msgid "" "sigc::slots use the sigc::slot<" "R(Args...)> syntax. Example: sigc::slot<" "void(int, int)> instead of sigc::slot<void, " "int, int>." msgstr "" "sigc::slot använder syntaxen sigc::slot<" "R(Args...)>. Exempel: sigc::slot<void(int, " "int)> i stället för sigc::slot<void, int, " "int>." #. (itstool) path: listitem/simpara #: C/index-in.docbook:816 #, fuzzy msgid "" "Gtk::DrawingArea uses a draw function instead of the " "draw signal." msgstr "" "Gtk::DrawingArea använder en ritfunktion i stället " "för signalen draw." #. (itstool) path: listitem/simpara #: C/index-in.docbook:817 msgid "" "Glib::ArrayHandle, Glib::" "StringArrayHandle, Glib::ListHandle and " "Glib::SListHandle have been removed. They were used " "in glibmm-2.4, but not used in " "gtkmm-3.0. If you've ever used these classes, " "replace them with a standard C++ container, such as std::vector." msgstr "" "Glib::ArrayHandle, Glib::" "StringArrayHandle, Glib::ListHandle och " "Glib::SListHandle har tagits bort. De användes i " "glibmm-2.4, men används inte i " "gtkmm-3.0. Om du har använt dessa klasser kan du " "ersätta dem med en C++-standardbehållare som std::vector." #. (itstool) path: listitem/simpara #: C/index-in.docbook:821 msgid "Gtk::Container has been removed." msgstr "Gtk::Container har tagits bort." #. (itstool) path: listitem/simpara #: C/index-in.docbook:822 #, fuzzy #| msgid "" #| "Gtk::Widget::show_all() has been removed. The " #| "default value of Gtk::Widget::property_visible()has been changed from false to " #| "true." msgid "" "Gtk::Widget::show_all() has been removed. The " "default value of Gtk::Widget::property_visible() " "has been changed from false to true." msgstr "" "Gtk::Widget::show_all() har tagits bort. " "Standardvärdet för Gtk::Widget::property_visible() " "har ändrats från false till true." #. (itstool) path: listitem/simpara #: C/index-in.docbook:825 msgid "" "All event signals have been removed from Gtk::Widget. " "In most cases you can use one of the subclasses of Gtk::" "EventController as a replacement. For instance, use " "Gtk::GestureMultiPress instead of " "signal_button_press_event() and " "signal_button_release_event(), and Gtk::" "EventControllerKey instead of " "signal_key_press_event() and " "signal_key_release_event()." msgstr "" "Alla händelsesignaler har tagits bort från Gtk::Widget. I de flesta fall kan du använda en av underklasserna för " "Gtk::EventController som ersättning. Använd till " "exempel Gtk::GestureMultiPress i stället för " "signal_button_press_event() och " "signal_button_release_event(), och Gtk::" "EventControllerKey i stället för " "signal_key_press_event() och " "signal_key_release_event()." #. (itstool) path: listitem/simpara #: C/index-in.docbook:832 msgid "" "Glib::RefPtr is an alias for std::" "shared_ptr. If you make your own Glib::ObjectBase-derived classes with create() methods " "that return a Glib::RefPtr, you must use " "Glib::make_refptr_for_instance() in your " "create() methods." msgstr "" "Glib::RefPtr är ett alias för std::" "shared_ptr. Om du gör dina egna Glib::ObjectBase-härledda klasser med create()-metoder " "som returnerar en Glib::RefPtr så måste du använda " "Glib::make_refptr_for_instance() i dina " "create()-metoder." #. (itstool) path: listitem/simpara #: C/index-in.docbook:837 msgid "" "Gtk::Box::pack_start() and Gtk::Box::" "pack_end() have been removed. Use the new Gtk::Box methods append(), prepend(), insert_child_after() and " "insert_child_at_start()." msgstr "" "Gtk::Box::pack_start() och Gtk::Box::" "pack_end() har tagits bort. Använd de nya Gtk::Box-metoderna append(), " "prepend(), insert_child_after() och insert_child_at_start()." #. (itstool) path: listitem/simpara #: C/index-in.docbook:842 msgid "Gtk::ButtonBox has been removed." msgstr "Gtk::ButtonBox har tagits bort." #. (itstool) path: listitem/simpara #: C/index-in.docbook:843 msgid "" "Gtk::RadioButton and Gtk::" "RadioButtonGroup have been removed. Use Gtk::" "CheckButton or Gtk::ToggleButton with " "set_group()." msgstr "" "Gtk::RadioButton och Gtk::" "RadioButtonGroup har tagits bort. Använd Gtk::" "CheckButton eller Gtk::ToggleButton med " "set_group()." #. (itstool) path: chapter/para #: C/index-in.docbook:848 msgid "" "All deprecated API was removed in gtkmm 4.0 and " "glibmm 2.68, though there will be new " "deprecations in future versions." msgstr "" "Alla föråldrade API:er togs bort i gtkmm 4.0 och " "glibmm 2.68, men det kommer göras nya " "föråldringar i framtida versioner." # TODO: copy paste of wiki page? #. (itstool) path: chapter/para #: C/index-in.docbook:851 #, fuzzy msgid "" "As a first step to porting your source code to gtkmm-4.0 you should probably ensure that your application builds " "with the deprecated gtkmm-3.0 and " "glibmm-2.4 API disabled, by defining the macros " "GTKMM_DISABLE_DEPRECATED, GDKMM_DISABLE_DEPRECATED, " "GLIBMM_DISABLE_DEPRECATED and GIOMM_DISABLE_DEPRECATED. There are some " "autotools macros that can help with this by defining them optionally at " "build time. See the Porting from gtkmm-2.4 to gtkmm-3.0 wiki page for " "more details." msgstr "" "Som ett första steg för att portera din källkod till gtkmm-4.0 bör du troligen säkerställa att ditt program går bygga med " "de föråldrade API:erna för gtkmm-3.0 och " "glibmm-2.4 inaktiverade, genom att definiera " "makrona GTKMM_DISABLE_DEPRECATED, GDKMM_DISABLE_DEPRECATED, " "GLIBMM_DISABLE_DEPRECATED och GIOMM_DISABLE_DEPRECATED. Det finns några " "autotools-makron som kan hjälpa till med detta genom att valfritt definiera " "dem vid byggtid. Se wikisidan för portering från gtkmm-2.4 till gtkmm-3.0 för mer detaljer." #. (itstool) path: chapter/para #: C/index-in.docbook:858 #, fuzzy #| msgid "" #| "See also Migrating from GTK 3.x to GTK 4." msgid "" "See also " "Migrating from GTK 3.x to GTK 4." msgstr "" "Se även Migrera från GTK 3.x till GTK 4." #. (itstool) path: section/title #: C/index-in.docbook:862 #, fuzzy #| msgid "Changes in gtkmm 3" msgid "Deprecations in gtkmm 4.10" msgstr "Ändringar i gtkmm 3" #. (itstool) path: section/para #: C/index-in.docbook:863 msgid "" "Many classes are deprecated since gtkmm 4.10. " "They can still be used in gtkmm4 applications, " "provided GTKMM_DISABLE_DEPRECATED and GDKMM_DISABLE_DEPRECATED are not " "defined. There are also many new classes in gtkmm " "4.10, which replace some of the deprecated classes. Some example programs in " "this tutorial use classes deprecated since gtkmm " "4.10. Some other programs use classes available since gtkmm 4.10." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:869 msgid "" "Deprecated classes: AppChooser, AppChooserButton, AppChooserDialog, " "AppChooserWidget, CellArea, CellAreaBox, CellAreaContext, CellLayout, " "CellRenderer, CellRendererAccel, CellRendererCombo, CellRendererPixbuf, " "CellRendererProgress, CellRendererSpin, CellRendererSpinner, " "CellRendererText, CellRendererToggle, CellView, ComboBox, ComboBoxText, " "EntryCompletion, IconView, ListStore, ListViewText, StyleContext, " "TreeDragDest, TreeDragSource, TreeIter and other classes in treeiter.h, " "TreeModel, TreeModelFilter, TreeModelSort, TreePath, TreeRowReference, " "TreeSelection, TreeSortable, TreeStore, TreeView, TreeViewColumn, namespace " "CellRenderer_Generation, namespace TreeView_Private, ColorButton, " "ColorChooser, ColorChooserDialog, FileChooser, FileChooserDialog, " "FileChooserNative, FileChooserWidget, FontButton, FontChooser, " "FontChooserDialog, FontChooserWidget, MessageDialog, TreeModelColumn, " "TreeModelColumnRecord, InfoBar, Assistant, AssistantPage, LockButton, " "Statusbar, VolumeButton." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:887 msgid "" "New classes and enums: AlertDialog, ColorDialog, ColorDialogButton, " "ColumnViewSorter, FileDialog, FontDialog, FontDialogButton, FileLauncher, " "UriLauncher, ATContext, enums DialogError, FontLevel, Collation." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:892 msgid "" "In most cases there are replacements for the deprecated classes. See the " "reference documentation." msgstr "" #. (itstool) path: chapter/title #: C/index-in.docbook:900 msgid "Buttons" msgstr "Knappar" #. (itstool) path: chapter/para #: C/index-in.docbook:902 msgid "gtkmm provides four basic types of buttons:" msgstr "" "gtkmm tillhandahåller fyra grundläggande " "knapptyper:" #. (itstool) path: varlistentry/term #: C/index-in.docbook:909 msgid "Push buttons" msgstr "Tryckknappar" #. (itstool) path: listitem/para #: C/index-in.docbook:911 #, fuzzy msgid "" "Gtk::Button. " "Standard buttons, usually marked with a label or picture. Pushing one " "triggers an action. See the Button " "section." msgstr "" "Gtk::Button. " "Standardknappar, vanligen markerade med en etikett eller bild. Att trycka på " "en av dem utlöser en åtgärd. Se avsnittet Button." #. (itstool) path: varlistentry/term #: C/index-in.docbook:918 msgid "Toggle buttons" msgstr "Växlingsknappar" #. (itstool) path: listitem/para #: C/index-in.docbook:920 #, fuzzy msgid "" "Gtk::ToggleButton. Unlike a normal Button, which springs back up, a ToggleButton stays " "down until you press it again. It might be useful as an on/off switch. See " "the ToggleButton section." msgstr "" "Gtk::ToggleButton. Till skillnad från en vanlig Button som fjädrar upp igen förblir en " "ToggleButton nedtryckt till du trycker på den igen. Den kan vara användbar " "som en på/av-brytare. Se avsnittet ToggleButton." #. (itstool) path: varlistentry/term #: C/index-in.docbook:928 msgid "Check buttons" msgstr "Kryssrutor" #. (itstool) path: listitem/para #: C/index-in.docbook:930 #, fuzzy msgid "" "Gtk::CheckButton. These act like ToggleButtons, but show their state in small squares, " "with their label at the side. They should be used in most situations which " "require an on/off setting. See the CheckButton section." msgstr "" "Gtk::CheckButton. Dessa fungerar som ToggleButton, men visar sitt tillstånd i små " "rutor, med sin etikett på sidan. De bör användas i de flesta situationer som " "kräver en på/av-inställning. Se avsnittet CheckButton." #. (itstool) path: varlistentry/term #: C/index-in.docbook:940 msgid "Radio buttons" msgstr "Radioknappar" #. (itstool) path: listitem/para #: C/index-in.docbook:942 msgid "" "Named after the station selectors on old car radios, these buttons are used " "in groups for options which are mutually exclusive. Pressing one causes all " "the others in its group to turn off. They are similar to ToggleButtons or " "CheckButtons (a small widget with a label at the side), but usually look " "different. There is no separate radio button class. Check buttons and toggle " "buttons can act as radio buttons. See the Radio Button section." msgstr "" "Dessa knappar har fått sitt namn efter stationsväljarna på gamla " "bilradioapparater, och används i grupper för alternativ som är ömsesidigt " "uteslutande. Att trycka på en av dem får alla andra i gruppen att slå av. De " "liknar ToggleButton eller CheckButton (en liten komponent med en etikett på " "sidan), men ser vanligen annorlunda ut. Det finns ingen separat klass för " "radioknappar. Kryssrutor och växlingsknappar kan användas som radioknappar. " "Se avsnittet Radioknapp." #. (itstool) path: chapter/para #: C/index-in.docbook:956 msgid "" "Note that, due to GTK's theming system, the appearance of these widgets will " "vary. In the case of check buttons and radio buttons, they may vary " "considerably." msgstr "" "Observera att på grund av GTK:s temasystem kommer utseendet på dessa " "komponenter att variera. I fallet med kryssrutor och radioknappar kan de " "variera avsevärt." #. (itstool) path: section/title #: C/index-in.docbook:963 msgid "Button" msgstr "Button" #. (itstool) path: section/para #: C/index-in.docbook:965 msgid "" "There are two ways to create a Button. You can specify a label string in the " "Gtk::Button constructor, or set it later with " "set_label()." msgstr "" "Det finns två sätt att skapa en Button. Du kan ange en etikettsträng i " "Gtk::Button-konstruktorn, eller ställa in den senare " "med set_label()." #. (itstool) path: section/para #: C/index-in.docbook:971 msgid "" "To define an accelerator key for keyboard navigation, place an underscore " "before one of the label's characters and specify true for " "the optional mnemonic parameter. For instance:" msgstr "" "För att definiera en snabbtangent för tangentbordsnavigering sätter du ett " "understreck före ett av etikettens tecken och anger true " "för den valfria parametern mnemonic. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:973 #, fuzzy, no-wrap msgid "Gtk::Button* pButton = new Gtk::Button(\"_Something\", true);" msgstr "Gtk::Button* pButton = new Gtk::Button(\"_Något\", true);" #. (itstool) path: section/para #: C/index-in.docbook:975 msgid "" "Gtk::Button is also a container so you could put any " "other widget, such as a Gtk::Image into it." msgstr "" "Gtk::Button är också en behållare, så du kan stoppa " "en valfri komponent, som en Gtk::Image i den." #. (itstool) path: section/para #: C/index-in.docbook:981 msgid "" "The Gtk::Button widget has the clicked signal which is emitted when the button is pressed and released." msgstr "" "Komponenten Gtk::Button har signalen " "clicked som sänds ut när knappen trycks ned och släpps." #. (itstool) path: section/para #: C/index-in.docbook:986 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:989 C/index-in.docbook:1043 C/index-in.docbook:1103 #: C/index-in.docbook:1219 C/index-in.docbook:1277 C/index-in.docbook:1595 #: C/index-in.docbook:1662 C/index-in.docbook:1685 C/index-in.docbook:1720 #: C/index-in.docbook:1774 C/index-in.docbook:1813 C/index-in.docbook:1854 #: C/index-in.docbook:1887 C/index-in.docbook:2177 C/index-in.docbook:2209 #: C/index-in.docbook:2263 C/index-in.docbook:2310 C/index-in.docbook:2471 #: C/index-in.docbook:2495 C/index-in.docbook:2519 C/index-in.docbook:2557 #: C/index-in.docbook:2585 C/index-in.docbook:2616 C/index-in.docbook:4513 #: C/index-in.docbook:4542 C/index-in.docbook:4569 C/index-in.docbook:4596 #: C/index-in.docbook:4628 C/index-in.docbook:4652 C/index-in.docbook:4831 #: C/index-in.docbook:4980 C/index-in.docbook:5056 C/index-in.docbook:5128 #: C/index-in.docbook:5196 C/index-in.docbook:5436 C/index-in.docbook:6293 #: C/index-in.docbook:6341 C/index-in.docbook:6909 C/index-in.docbook:7033 #: C/index-in.docbook:7680 C/index-in.docbook:7741 C/index-in.docbook:7799 #: C/index-in.docbook:8024 C/index-in.docbook:9487 msgid "Example" msgstr "Exempel" #. (itstool) path: section/para #: C/index-in.docbook:991 msgid "This example creates a button with a picture and a label." msgstr "Detta exempel skapar en knapp med en bild och en etikett." #. (itstool) path: figure/title #: C/index-in.docbook:996 msgid "buttons example" msgstr "knappexempel" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:998 #, fuzzy msgctxt "_" msgid "" "external ref='figures/buttons.png' md5='ab288a013ed7d6c0b797f5998961dea9'" msgstr "" "external ref='figures/buttons.png' md5='ab288a013ed7d6c0b797f5998961dea9'" #. (itstool) path: section/para #: C/index-in.docbook:1002 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:1009 msgid "ToggleButton" msgstr "ToggleButton" #. (itstool) path: section/para #: C/index-in.docbook:1011 msgid "" "ToggleButtons are like normal Buttons, but when clicked they remain activated, or pressed, until " "clicked again." msgstr "" "En ToggleButton är som en vanlig Button, men när den klickas på förblir den aktiverad, eller nedtryckt, " "tills den klickas på igen." #. (itstool) path: section/para #: C/index-in.docbook:1013 msgid "" "To retrieve the state of the ToggleButton, you can " "use the get_active() method. This returns " "true if the button is \"down\". You can also set the " "toggle button's state, with set_active(). Note " "that, if you do this, and the state actually changes, it causes the " "\"clicked\" signal to be emitted. This is usually what you want." msgstr "" "För att erhålla tillståndet för vår ToggleButton kan " "du använda metoden get_active(). Denna returnerar " "true om knappen är ”nere”. Du kan också ställa in " "växlingsknappens tillstånd med set_active(). " "Observera att om du gör detta och tillståndet faktiskt ändras, så får det " "signalen ”clicked” att sändas ut. Detta är vanligen vad du vill." #. (itstool) path: section/para #: C/index-in.docbook:1020 msgid "" "You can use the toggled() method to toggle the " "button, rather than forcing it to be up or down: This switches the button's " "state, and causes the toggled signal to be emitted." msgstr "" "Du kan använda metoden toggled() för att trycka på " "knappen, snarare än att tvinga den att vara uppe eller nere: detta växlar " "knappens tillstånd, och får signalen toggled att sändas " "ut." #. (itstool) path: section/para #: C/index-in.docbook:1025 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1030 C/index-in.docbook:1046 msgid "CheckButton" msgstr "CheckButton" #. (itstool) path: section/para #: C/index-in.docbook:1032 msgid "" "Gtk::CheckButton inherits directly from " "Gtk::Widget. It is similar to Gtk::" "ToggleButton. The only real difference between the two is " "Gtk::CheckButton's appearance. You can check and set " "a check button using the same member methods as for Gtk::" "ToggleButton." msgstr "" "Gtk::CheckButton ärver direkt från Gtk::" "Widget. Den liknar Gtk::ToggleButton. Den " "enda verkliga skillnaden mellan de två är utseendet för Gtk::" "CheckButton. Du kan kontrollera och ställa in en kryssruta med " "samma medlemsmetoder som för Gtk::ToggleButton." #. (itstool) path: section/para #: C/index-in.docbook:1040 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1048 #, fuzzy msgctxt "_" msgid "" "external ref='figures/checkbutton.png' md5='4d0e8f846ce98aeeada64227dd2f55a7'" msgstr "" "external ref='figures/checkbutton.png' md5='4d0e8f846ce98aeeada64227dd2f55a7'" #. (itstool) path: section/para #: C/index-in.docbook:1052 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:1058 msgid "Radio Button" msgstr "Radioknapp" #. (itstool) path: section/para #: C/index-in.docbook:1060 msgid "" "There is no separate class for radio buttons. Check buttons and toggle " "buttons act as radio buttons when they form a group. Only one button in a " "group can be selected at any one time." msgstr "" "Det finns ingen separat klass för radioknappar. Kryssrutor och " "växlingsknappar agerar som radioknappar då de bildar en grupp. Endast en " "knapp åt gången kan vara vald i en grupp." #. (itstool) path: section/title #: C/index-in.docbook:1067 msgid "Groups" msgstr "Grupper" #. (itstool) path: section/para #: C/index-in.docbook:1068 msgid "" "You create the buttons, and set up their group afterwards. In the following " "example, we put 3 radio buttons in a group:" msgstr "" "Du skapar knapparna, och konfigurerar deras grupp efteråt. I följande " "exempel stoppar vi 3 radioknappar i en grupp:" #. (itstool) path: section/programlisting #: C/index-in.docbook:1073 #, no-wrap msgid "" "\n" "auto rb1 = Gtk::make_managed<Gtk::CheckButton>(\"button1\");\n" "auto rb2 = Gtk::make_managed<Gtk::CheckButton>(\"button2\");\n" "auto rb3 = Gtk::make_managed<Gtk::CheckButton>(\"button3\");\n" "rb2->set_group(*rb1);\n" "rb3->set_group(*rb1);\n" msgstr "" "\n" "auto rb1 = Gtk::make_managed<Gtk::CheckButton>(\"knapp1\");\n" "auto rb2 = Gtk::make_managed<Gtk::CheckButton>(\"knapp2\");\n" "auto rb3 = Gtk::make_managed<Gtk::CheckButton>(\"knapp3\");\n" "rb2->set_group(*rb1);\n" "rb3->set_group(*rb1);\n" #. (itstool) path: section/para #: C/index-in.docbook:1081 msgid "" "We told gtkmm to put all three " "CheckButtons in the same group by using " "set_group() to tell the other " "CheckButtons to share group with the first " "CheckButton." msgstr "" "Vi sa till gtkmm att stoppa alla tre " "CheckButton-knapparna i samma grupp genom att använda " "set_group() för att säga till de andra två " "CheckButton-knapparna att dela grupp med den första " "CheckButton-knappen." #. (itstool) path: section/title #: C/index-in.docbook:1091 C/index-in.docbook:1556 C/index-in.docbook:5307 msgid "Methods" msgstr "Metoder" #. (itstool) path: section/para #: C/index-in.docbook:1092 msgid "" "CheckButtons and ToggleButtons " "are \"off\" when created; this means that when you first make a group of " "them, they will all be off. Don't forget to turn one of them on using " "set_active()." msgstr "" "CheckButton och ToggleButton " "är ”av” när de skapas. Detta betyder att när du först gör en grupp av dem " "kommer alla vara ”av”. Glöm inte att slå på en av dem med " "set_active()." #. (itstool) path: section/para #: C/index-in.docbook:1098 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1104 msgid "" "The following example demonstrates the use of grouped " "CheckButtons:" msgstr "" "Följande exempel demonstrerar användningen av grupperade " "CheckButton-knappar:" #. (itstool) path: figure/title #: C/index-in.docbook:1110 msgid "RadioButton" msgstr "RadioButton" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1112 #, fuzzy msgctxt "_" msgid "" "external ref='figures/radiobuttons.png' " "md5='49ad0ed4567104af07b1c6484ffb821e'" msgstr "" "external ref='figures/radiobuttons.png' " "md5='49ad0ed4567104af07b1c6484ffb821e'" #. (itstool) path: section/para #: C/index-in.docbook:1116 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #. (itstool) path: figure/title #: C/index-in.docbook:1123 C/index-in.docbook:1230 #, fuzzy msgid "Range Widgets" msgstr "Intervallkomponenter" #. (itstool) path: chapter/para #: C/index-in.docbook:1125 #, fuzzy msgid "" "Gtk::Scale inherits from Gtk::Range. Gtk::Scrollbar does not inherit from " "Gtk::Range, but it shares much functionality with " "Gtk::Scale. They both contain a \"trough\" and a " "\"slider\" (sometimes called a \"thumbwheel\" in other GUI environments). " "Dragging the slider with the pointer moves it within the trough, while " "clicking in the trough advances the slider towards the location of the " "click, either completely, or by a designated amount, depending on which " "mouse button is used. This should be familiar scrollbar behavior." msgstr "" "Gtk::Scale ärver från Gtk::Range. Gtk::Scrollbar ärver inte från " "Gtk::Range, men delar mycket funktionalitet med " "Gtk::Scale. De innehåller båda ett ”tråg” och ett " "”skjutreglage” (ibland kallat ett ”tumhjul” i andra grafiska " "användargränssnittsmiljöer). Att dra skjutreglaget med pekaren flyttar den i " "tråget, medan att klicka i tråget flyttar skjutreglaget i riktning mot " "klickets plats, antingen fullständigt, eller med en angiven mängd, beroende " "på vilken musknapp som används. Det här bör vara bekant beteende för " "rullningslister." #. (itstool) path: chapter/para #: C/index-in.docbook:1137 #, fuzzy msgid "" "As will be explained in the Adjustments section, all range widgets are associated " "with an Adjustment object. To change the lower, " "upper, and current values used by the widget you need to use the methods of " "its Adjustment, which you can get with the " "get_adjustment() method. The range widgets' default " "constructors create an Adjustment automatically, or " "you can specify an existing Adjustment, maybe to " "share it with another widget. See the Adjustments section for further details." msgstr "" "Som kommer förklaras i avsnittet Justeringar så är alla intervallkomponenter associerade " "med ett Adjustment-objekt. För att ändra de lägsta, " "högsta och aktuella värdena som används av komponenten behöver du använda " "metoderna för dess Adjustment vilka du kan få med " "metoden get_adjustment(). Intervallkomponenternas " "standardkonstruktorer skapar automatiskt en Adjustment, eller så kan du ange en befintlig Adjustment, kanske för att dela med en annan komponent. Se avsnittet Justeringar för mer detaljer." #. (itstool) path: chapter/para #: C/index-in.docbook:1151 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:1154 msgid "Scrollbar Widgets" msgstr "Rullningslistkomponenter" #. (itstool) path: section/para #: C/index-in.docbook:1156 msgid "" "These are standard scrollbars. They should be used only to scroll another " "widget, such as a Gtk::Entry or a Gtk::" "Viewport, though it's usually easier to use the Gtk::" "ScrolledWindow widget in most cases." msgstr "" "Dessa är standardrullningslister. De bör endast användas för att rulla en " "annan komponent, som en Gtk::Entry eller " "Gtk::Viewport, men det är vanligen lättare att " "använda komponenten Gtk::ScrolledWindow i de flesta " "fall." #. (itstool) path: section/para #: C/index-in.docbook:1163 msgid "" "The orientation of a Gtk::Scrollbar can be either " "horizontal or vertical." msgstr "" "Orienteringen för en Gtk::Scrollbar kan vara antingen " "horisontell eller vertikal." #. (itstool) path: section/para #: C/index-in.docbook:1168 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:1173 #, fuzzy msgid "Scale Widgets" msgstr "Skalkomponenter" # TODO: color #. (itstool) path: section/para #: C/index-in.docbook:1175 #, fuzzy msgid "" "Gtk::Scale widgets (or \"sliders\") allow the user to " "visually select and manipulate a value within a specific range. You might " "use one, for instance, to adjust the magnification level on a zoomed preview " "of a picture, or to control the brightness of a colour, or to specify the " "number of minutes of inactivity before a screensaver takes over the screen." msgstr "" "Gtk::Scale-komponenter (eller ”skjutreglage”) låter " "användaren visuellt välja och manipulera ett värde inom ett visst intervall. " "Du använder exempelvis kanske en för att justera förstoringsnivån på en " "zoomad förhandsgranskning av en bild, eller för att styra ljusstyrkan för en " "färg, eller för att ange antalet inaktiva minuter innan en skärmsläckare tar " "över skärmen." # TODO: behavior #. (itstool) path: section/para #: C/index-in.docbook:1184 #, fuzzy #| msgid "" #| "As with Scrollbars, the orientation can be either " #| "horizontal or vertical. The default constructor creates an " #| "Adjustment with all of its values set to " #| "0.0. This isn't useful so you will need to set some " #| "Adjustment details to get meaningful behaviour." msgid "" "As with Scrollbars, the orientation can be either " "horizontal or vertical. The default constructor creates an " "Adjustment with all of its values set to " "0.0. This isn't useful so you will need to set some " "Adjustment details to get meaningful behavior." msgstr "" "Som med Scrollbar kan orienteringen vara antingen " "horisontell eller vertikal. Standardkonstruktorn skapar en " "Adjustment med alla sina värden satta till " "0.0. Det här är inte användbart så du kommer behöva " "ställa in några Adjustment-detaljer för att få " "betydelsefullt beteende." #. (itstool) path: section/title #: C/index-in.docbook:1193 msgid "Useful methods" msgstr "Användbara metoder" #. (itstool) path: section/para #: C/index-in.docbook:1195 #, fuzzy msgid "" "Scale widgets can display their current value as a " "number next to the trough. By default they show the value, but you can " "change this with the set_draw_value() method." msgstr "" "Scale-komponenter kan visa sina aktuella värden som " "ett tal intill tråget. Som standard visar de värdet, men du kan ändra detta " "med metoden set_draw_value()." #. (itstool) path: section/para #: C/index-in.docbook:1201 #, fuzzy msgid "" "The value displayed by a scale widget is rounded to one decimal point by " "default, as is the value field in its Gtk::" "Adjustment. You can change this with the " "set_digits() method." msgstr "" "Värdet som visas av en skalkomponent avrundas till en decimal som standard, " "som det är i fältet value i dess Gtk::" "Adjustment. Du kan ändra detta med metoden " "set_digits()." #. (itstool) path: section/para #: C/index-in.docbook:1208 #, fuzzy msgid "" "Also, the value can be drawn in different positions relative to the trough, " "specified by the set_value_pos() method." msgstr "" "Värdet kan också skrivas ut i olika positions relativt till tråget, angivet " "av metoden set_value_pos()." #. (itstool) path: section/para #: C/index-in.docbook:1213 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1221 #, fuzzy msgid "" "This example displays a window with three range widgets all connected to the " "same adjustment, along with a couple of controls for adjusting some of the " "parameters mentioned above and in the section on adjustments, so you can see " "how they affect the way these widgets work for the user." msgstr "" "Detta exempel visar ett fönster med tre intervallkomponenter som alla " "anslutits till samma justering, tillsammans med ett par kontroller för att " "justera några av parametrarna som nämnts ovan och i avsnittet om " "justeringar, så du kan se hur de påverkar sättet dessa komponenter fungerar " "för användaren." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1232 #, fuzzy msgctxt "_" msgid "" "external ref='figures/range_widgets.png' " "md5='8bebdf457c84aa921681a7f44f46f244'" msgstr "" "external ref='figures/range_widgets.png' " "md5='8bebdf457c84aa921681a7f44f46f244'" #. (itstool) path: section/para #: C/index-in.docbook:1236 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:1243 msgid "Miscellaneous Widgets" msgstr "Diverse komponenter" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1246 C/index-in.docbook:1287 #, fuzzy msgid "Label" msgstr "Label" #. (itstool) path: section/para #: C/index-in.docbook:1248 msgid "" "Labels are the main method of placing non-editable text in windows, for " "instance to place a title next to an Entry widget. " "You can specify the text in the constructor, or later with the " "set_text() or set_markup() " "methods." msgstr "" "Etiketter är huvudmetoden för att placera ej redigerbar text i fönster, " "exempelvis för att placera en titel intill en Entry-" "komponent. Du kan ange texten i konstruktorn, eller senare med metoderna " "set_text() eller set_markup()." #. (itstool) path: section/para #: C/index-in.docbook:1255 msgid "" "The width of the label will be adjusted automatically. You can produce multi-" "line labels by putting line breaks (\"\\n\") in the label string." msgstr "" "Bredden på etiketten kommer justeras automatiskt. Du kan skapa etiketter med " "flera rader genom att stoppa nyrader (”\\n”) i etikettsträngen." #. (itstool) path: section/para #: C/index-in.docbook:1259 #, fuzzy msgid "" "The label text can be justified using the set_justify() method. The widget is also capable of word-wrapping, which can " "be activated with set_wrap()." msgstr "" "Etikettexten kan justeras med metoden set_justify(). Etiketten kan också radbryta ord, vilket kan aktiveras med " "set_wrap()." # TODO: remove space before . ? #. (itstool) path: section/para #: C/index-in.docbook:1265 #, fuzzy msgid "" "Gtk::Label supports some simple formatting, for instance allowing you to " "make some text bold, colored, or larger. You can do this by providing a " "string to set_markup(), using the Pango Markup syntax. For instance, <b>bold text</b> and <s>" "strikethrough text</s> ." msgstr "" "Gtk::Label stöder viss enkel formatering, till exempel låter det dig göra " "text i fetstil, i färg, eller större. Du kan göra detta genom att " "tillhandahålla en sträng till set_markup() med " "Pango " "Markup-syntax. Exempelvis, <b>text i fetstil</b> " "och <s>genomstruken text</s> ." #. (itstool) path: section/para #: C/index-in.docbook:1274 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1278 msgid "" "Below is a short example to illustrate these functions. This example makes " "use of the Frame widget to better demonstrate the label styles. (The Frame " "widget is explained in the Frame " "section.) It is possible that the first character in " "m_Label_Normal is shown underlined only when you press " "the Alt key." msgstr "" "Nedan är ett kort exempel för att illustrera dessa funktioner. Detta exempel " "använder komponenten Frame för att bättre demonstrera etikettstilarna. " "(Komponenten Frame förklaras i avsnittet Frame.) Det är möjligt att det första tecknet i m_Label_Normal endast visas understruket när du trycker på Alt-" "tangenten." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1289 #, fuzzy msgctxt "_" msgid "external ref='figures/label.png' md5='107dd71338becc14c70fbd3a708caa89'" msgstr "" "external ref='figures/label.png' md5='107dd71338becc14c70fbd3a708caa89'" #. (itstool) path: section/para #: C/index-in.docbook:1293 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1300 C/index-in.docbook:1356 #, fuzzy msgid "Entry" msgstr "Entry" #. (itstool) path: section/title #: C/index-in.docbook:1303 msgid "Simple Use" msgstr "Enkel användning" #. (itstool) path: section/para #: C/index-in.docbook:1305 #, fuzzy msgid "" "Entry widgets allow the user to enter text. You can change the contents with " "the set_text() method, and read the current " "contents with the get_text() method." msgstr "" "Inmatningskomponenter låter användaren mata in text. Du kan ändra innehållet " "med metoden set_text(), och läsa aktuellt innehåll " "med metoden get_text()." #. (itstool) path: section/para #: C/index-in.docbook:1310 msgid "" "Occasionally you might want to make an Entry widget " "read-only. This can be done by passing false to the " "set_editable() method." msgstr "" "Ibland kan du vilja göra en Entry-komponent " "skrivskyddad. Detta kan göras genom att skicka false till " "metoden set_editable()." #. (itstool) path: section/para #: C/index-in.docbook:1316 msgid "" "For the input of passwords, passphrases and other information you don't want " "echoed on the screen, calling set_visibility() with " "false will cause the text to be hidden." msgstr "" "För inmatning av lösenord, lösenfraser och annan information du inte vill " "ska skrivas ut på skärmen kan du anropa set_visibility() med false för att texten ska vara dold." #. (itstool) path: section/para #: C/index-in.docbook:1322 #, fuzzy msgid "" "You might want to be notified whenever the user types in a text entry " "widget. Gtk::Entry provides two signals, " "activate (since gtkmm 4.8) and " "changed, for this purpose. activate is " "emitted when the user presses the Enter key in a text-entry " "widget; changed is emitted when the text in the widget " "changes. You can use these, for instance, to validate or filter the text the " "user types. Moving the keyboard focus to another widget may also signal that " "the user has finished entering text. The leave signal in " "a Gtk::EventControllerFocus can notify you when that " "happens. The ComboBox with an Entry section contains example programs that use these signals." msgstr "" "Du kan vilja meddelas närhelst användaren skriver i en " "textinmatningskomponent. Gtk::Entry tillhandahåller " "två signaler, activate (sedan gtkmm 4.8.0) och changed för detta syfte. " "activate sänds ut när användaren trycker på " "Retur-tangenten i en textinmatningskomponent; " "changed sänds ut när texten i komponenten ändras. Du kan " "exempelvis använda dessa för att validera eller filtrera texten som " "användaren skriver in. Att flytta tangentbordsfokus till en annan komponent " "kan också signalera att användaren är klar med att mata in text. Signalen " "leave i ett Gtk::EventControllerFocus kan meddela dig när det händer. Avsnittet ComboBox med ett Entry innehåller exempelprogram som " "använder dessa signaler." #. (itstool) path: section/para #: C/index-in.docbook:1336 #, fuzzy msgid "" "If you pass true to the " "set_activates_default() method, pressing " "Enter in the Gtk::Entry will " "activate the default widget for the window containing the Gtk::" "Entry. This is especially useful in dialog boxes. The default " "widget is usually one of the dialog buttons, which e.g. will close the " "dialog box. To set a widget as the default widget, use Gtk::" "Window::set_default_widget()." msgstr "" "Om du skickar true till metoden " "set_activates_default() kommer att trycka " "Retur i vår Gtk::Entry aktivera " "standardkomponenten för fönstret som innehåller vår Gtk::Entry. Detta är speciellt användbart i dialogrutor. Standardkomponenten " "är vanligen en av dialogknapparna, vilken t.ex. kommer stänga dialogrutan. " "Använd Gtk::Window::set_default_widget() för att " "ställa in en komponent som standardkomponenten." #. (itstool) path: section/para #: C/index-in.docbook:1345 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:1348 #, fuzzy msgid "Simple Entry Example" msgstr "Enkelt inmatningsexempel" #. (itstool) path: section/para #: C/index-in.docbook:1349 msgid "" "This example uses Gtk::Entry. It also has two " "CheckButtons, with which you can toggle the editable " "and visible flags." msgstr "" "Detta exempel använder Gtk::Entry. Det har också två " "CheckButton-knappar, med vilka du kan växla flaggorna " "för redigering och synlighet." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1358 #, fuzzy msgctxt "_" msgid "external ref='figures/entry.png' md5='ae877c1b982f8c6cadebc9867f6d9075'" msgstr "" "external ref='figures/entry.png' md5='ae877c1b982f8c6cadebc9867f6d9075'" #. (itstool) path: section/para #: C/index-in.docbook:1362 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1369 C/index-in.docbook:1409 #, fuzzy msgid "Entry Completion" msgstr "Inmatningskomplettering" #. (itstool) path: note/para #: C/index-in.docbook:1371 #, fuzzy #| msgid "" #| "Some new classes were added in gtkmm 4 and " #| "glibmm 2.68:" msgid "" "Gtk::EntryCompletion is deprecated since " "gtkmm 4.10. There is no replacement in " "gtkmm." msgstr "" "Några nya klasser lades till i gtkmm 4 och " "glibmm 2.68:" #. (itstool) path: section/para #: C/index-in.docbook:1375 msgid "" "An Entry widget can offer a drop-down list of pre-" "existing choices based on the first few characters typed by the user. For " "instance, a search dialog could suggest text from previous searches." msgstr "" "En Entry-komponent kan erbjuda en rullgardinslista " "med befintliga val baserat på de första tecken som användaren skrivit in. En " "sökdialog skulle exempelvis kunna föreslå text från tidigare sökningar." #. (itstool) path: section/para #: C/index-in.docbook:1380 msgid "" "To enable this functionality, you must create an EntryCompletion object, and provide it to the Entry widget " "via the set_completion() method." msgstr "" "För att aktivera denna funktionalitet måste du skapa ett " "EntryCompletion-objekt, och tillhandahålla det till " "Entry-komponenten genom metoden " "set_completion()." #. (itstool) path: section/para #: C/index-in.docbook:1385 #, fuzzy msgid "" "The EntryCompletion may use a TreeModel containing possible entries, specified with " "set_model(). You should then call " "set_text_column() to specify which of your model " "columns should be used to match possible text entries." msgstr "" "Denna EntryCompletion kan använda en " "TreeModel som innehåller möjliga inmatningar, angivet " "med set_model(). Du bör sedan anropa " "set_text_column() för att ange vilka av dina " "modellkolumner som ska användas för att matcha möjliga textinmatningar." #. (itstool) path: section/para #: C/index-in.docbook:1391 #, fuzzy msgid "" "Alternatively, if a complete list of possible entries would be too large or " "too inconvenient to generate, a callback slot may instead be specified with " "set_match_func(). This is also useful if you wish " "to match on a part of the string other than the start." msgstr "" "Alternativt kan, om en fullständig lista över möjliga inmatningar skulle " "vara för stor eller opraktisk att skapa, ett återanropsfack i stället anges " "med set_match_func(). Detta är även användbart om " "du vill matcha strängen på en annan del än starten." #. (itstool) path: section/para #: C/index-in.docbook:1397 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:1400 #, fuzzy msgid "Entry Completion Example" msgstr "Exempel på inmatningskomplettering" #. (itstool) path: section/para #: C/index-in.docbook:1401 msgid "" "This example creates a Gtk::EntryCompletion and " "associates it with a Gtk::Entry widget. The " "completion uses a Gtk::TreeModel of possible entries, " "and some additional actions." msgstr "" "Detta exempel skapar en Gtk::EntryCompletion och " "associerar den med en Gtk::Entry-komponent. " "Kompletteringen använder en Gtk::TreeModel med " "möjliga inmatningar och några ytterligare åtgärder." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1411 #, fuzzy msgctxt "_" msgid "" "external ref='figures/entry_completion.png' " "md5='5b9015c5bd9c04c2c51eb1de40ab7534'" msgstr "" "external ref='figures/entry_completion.png' " "md5='5b9015c5bd9c04c2c51eb1de40ab7534'" #. (itstool) path: section/para #: C/index-in.docbook:1415 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:1421 #, fuzzy msgid "Entry Icons" msgstr "Inmatningsikoner" #. (itstool) path: section/para #: C/index-in.docbook:1423 #, fuzzy #| msgid "" #| "An Entry widget can show an icon at the start or " #| "end of the text area. The icon can be specifed by methods such as " #| "set_icon_from_paintable() or " #| "set_icon_from_icon_name(). An application can " #| "respond to the user pressing the icon by handling the " #| "signal_icon_press signal." msgid "" "An Entry widget can show an icon at the start or end " "of the text area. The icon can be specified by methods such as " "set_icon_from_paintable() or " "set_icon_from_icon_name(). An application can " "respond to the user pressing the icon by handling the " "signal_icon_press signal." msgstr "" "En Entry-komponent kan visa en ikon i början eller i " "slutet på textområdet. Ikonen kan anges av metoder som " "set_icon_from_paintable() eller " "set_icon_from_icon_name(). Ett program kan svara på " "tryck på ikonen genom att hantera signalen signal_icon_press." #. (itstool) path: section/title #: C/index-in.docbook:1431 #, fuzzy msgid "Entry Icon Example" msgstr "Exempel på inmatningsikon" #. (itstool) path: section/para #: C/index-in.docbook:1432 msgid "" "This example shows a Gtk::Entry widget with a named " "search icon, and prints text to the terminal when the icon is pressed." msgstr "" "Detta exempel visar en Gtk::Entry-komponent med en " "namngiven sökikon, och skriver ut text till terminalen när ikonen trycks ned." #. (itstool) path: figure/title #: C/index-in.docbook:1438 #, fuzzy msgid "Entry with Icon" msgstr "Entry med ikon" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1440 #, fuzzy msgctxt "_" msgid "" "external ref='figures/entry_icon.png' md5='fb1db5f1b82bb2849d352170ada89191'" msgstr "" "external ref='figures/entry_icon.png' md5='fb1db5f1b82bb2849d352170ada89191'" #. (itstool) path: section/para #: C/index-in.docbook:1444 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:1450 #, fuzzy msgid "Entry Progress" msgstr "Inmatningsförlopp" #. (itstool) path: section/para #: C/index-in.docbook:1452 msgid "" "An Entry widget can show a progress bar inside the " "text area, under the entered text. The progress bar will be shown if the " "set_progress_fraction() or " "set_progress_pulse_step() methods are called." msgstr "" "En Entry-komponent kan visa en förloppsindikator " "inuti textområdet, under den inmatade texten. Förloppsindikatorn kommer " "visas om metoderna set_progress_fraction() eller " "set_progress_pulse_step() anropas." #. (itstool) path: section/title #: C/index-in.docbook:1458 #, fuzzy msgid "Entry Progress Example" msgstr "Exempel på inmatningsförlopp" #. (itstool) path: section/para #: C/index-in.docbook:1459 msgid "" "This example shows a Gtk::Entry widget with a " "progress bar." msgstr "" "Detta exempel visar en Gtk::Entry-komponent med en " "förloppsindikator." #. (itstool) path: figure/title #: C/index-in.docbook:1465 #, fuzzy msgid "Entry with Progress Bar" msgstr "Entry med förloppsindikator" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1467 #, fuzzy msgctxt "_" msgid "" "external ref='figures/entry_progress.png' " "md5='07a446c645744d0ab3516112271cf4e3'" msgstr "" "external ref='figures/entry_progress.png' " "md5='07a446c645744d0ab3516112271cf4e3'" #. (itstool) path: section/para #: C/index-in.docbook:1471 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1479 C/index-in.docbook:1602 msgid "SpinButton" msgstr "SpinButton" #. (itstool) path: section/para #: C/index-in.docbook:1481 #, fuzzy msgid "" "A SpinButton allows the user to select a value from a " "range of numeric values. It has an Entry widget with " "increment and decrement buttons at the side. Clicking the buttons causes the " "value to 'spin' up and down across the range of possible values. The " "Entry widget may also be used to enter a value " "directly." msgstr "" "En SpinButton låter användaren välja ett värde från " "ett numeriskt intervall. Den har en Entry-komponent " "med öknings- och minskningsknappar på sidan. Att klicka på knapparna får " "värdet att ”snurras” upp och ner längs intervallet av möjliga värden. " "Entry-komponenten kan också användas för att direkt " "mata in ett värde." #. (itstool) path: section/para #: C/index-in.docbook:1489 msgid "" "The value can have an adjustable number of decimal places, and the step size " "is configurable. SpinButtons have an 'auto-repeat' " "feature as well: holding down the increment or decrement button can " "optionally cause the value to change more quickly the longer the button is " "held down." msgstr "" "Värdet kan ha ett justerbart antal decimaler, och stegstorleken kan " "konfigureras. SpinButton har även en funktion för " "”automatisk upprepning”: att hålla ner öknings- eller minskningsknappen kan " "valfritt få värdet att ändras snabbare ju längre knappen hålls ner." #. (itstool) path: listitem/para #: C/index-in.docbook:1503 msgid "value: value for the Spin Button" msgstr "value: värdet på stegningsrutan" #. (itstool) path: listitem/para #: C/index-in.docbook:1509 msgid "lower: lower range value" msgstr "lower: lägsta intervallvärde" #. (itstool) path: listitem/para #: C/index-in.docbook:1515 msgid "upper: upper range value" msgstr "upper: högsta intervallvärde" #. (itstool) path: listitem/para #: C/index-in.docbook:1520 msgid "" "step_increment: value to increment/decrement when " "pressing mouse button 1" msgstr "" "step_increment: värde att öka/minska med när musknapp 1 " "trycks ned" #. (itstool) path: listitem/para #: C/index-in.docbook:1527 msgid "" "page_increment: value to increment/decrement when " "pressing mouse button 2" msgstr "" "page_increment: värde att öka/minska med när musknapp 2 " "trycks ned" #. (itstool) path: listitem/para #: C/index-in.docbook:1534 msgid "page_size: unused" msgstr "page_size: används inte" #. (itstool) path: section/para #: C/index-in.docbook:1496 #, fuzzy msgid "" "SpinButtons use an Adjustment object to hold information about the range of " "values. These Adjustment attributes are used by the Spin Button like so: <_:" "itemizedlist-1/>" msgstr "" "SpinButton-rutor använder ett Adjustment-objekt för att hålla information om " "värdeintervallet. Dessa Adjustment-attribut används så här av " "stegningsrutan: <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:1542 msgid "" "Additionally, mouse button 3 can be used to jump directly to the " "upper or lower values." msgstr "" "Vidare kan musknapp 3 användas för att hoppa direkt till värdena " "upper eller lower." #. (itstool) path: section/para #: C/index-in.docbook:1547 msgid "" "The SpinButton can create a default " "Adjustment, which you can access via the " "get_adjustment() method, or you can specify an " "existing Adjustment in the constructor." msgstr "" "SpinButton kan skapa en standard-" "Adjustment som du kan komma åt genom " "get_adjustment()-metoden, eller så kan du ange en " "befintlig Adjustment i konstruktorn." #. (itstool) path: section/para #: C/index-in.docbook:1558 msgid "" "The number of decimal places can be altered using the " "set_digits() method." msgstr "" "Antalet decimaltecken kan ändras med metoden set_digits()." #. (itstool) path: section/para #: C/index-in.docbook:1563 msgid "" "You can set the spinbutton's value using the set_value() method, and retrieve it with get_value()." msgstr "" "Du kan ställa in stegningsrutans värde med metoden set_value(), och erhålla det med get_value()." #. (itstool) path: section/para #: C/index-in.docbook:1568 #, fuzzy msgid "" "The spin() method 'spins' the " "SpinButton, as if its increment or decrement button " "had been clicked. You need to specify a Gtk::SpinType " "to specify the direction or new position." msgstr "" "Metoden spin() ”snurrar” vår SpinButton som om dess knapp för ökning eller minskning har klickats på. Du " "behöver ange en Gtk::SpinType för att ange riktningen " "eller ny position." #. (itstool) path: section/para #: C/index-in.docbook:1575 #, fuzzy msgid "" "To prevent the user from typing non-numeric characters into the entry box, " "pass true to the set_numeric() " "method." msgstr "" "För att hindra användaren från att mata in icke-numeriska tecken i " "inmatningsfältet sätter du metoden set_numeric() " "till true." #. (itstool) path: section/para #: C/index-in.docbook:1580 #, fuzzy msgid "" "To make the SpinButton 'wrap' between its upper and " "lower bounds, use the set_wrap() method." msgstr "" "För att få SpinButton att ”slå runt” mellan sina " "högsta och lägsta gränser, använd metoden set_wrap()." #. (itstool) path: section/para #: C/index-in.docbook:1585 #, fuzzy msgid "" "To force it to snap to the nearest step_increment, use " "set_snap_to_ticks()." msgstr "" "För att tvinga den att fästa vid närmaste step_increment, " "använd set_snap_to_ticks()." #. (itstool) path: section/para #: C/index-in.docbook:1590 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1597 msgid "Here's an example of a SpinButton in action:" msgstr "" "Här är ett exempel på användning av en SpinButton:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1604 #, fuzzy msgctxt "_" msgid "" "external ref='figures/spinbutton.png' md5='2157244b231fea5619793aa8ba25d4d8'" msgstr "" "external ref='figures/spinbutton.png' md5='2157244b231fea5619793aa8ba25d4d8'" #. (itstool) path: section/para #: C/index-in.docbook:1608 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1615 C/index-in.docbook:1665 msgid "ProgressBar" msgstr "ProgressBar" #. (itstool) path: section/para #: C/index-in.docbook:1617 msgid "" "Progress bars are used to show the status of an ongoing operation. For " "instance, a ProgressBar can show how much of a task " "has been completed." msgstr "" "Förloppsindikatorer används för att visa status för en pågående operation. " "Exempelvis kan ProgressBar visa hur mycket av en " "uppgift som har slutförts." #. (itstool) path: section/para #: C/index-in.docbook:1623 #, fuzzy msgid "" "To change the value shown, use the set_fraction() " "method, passing a double between 0.0 and 1.0 to provide the new " "fraction." msgstr "" "För att ändra det visade värdet, använd metoden set_fraction(), och skicka med en double mellan 0.0 och 1.0 för " "att ge den nya bråkdelen." #. (itstool) path: section/para #: C/index-in.docbook:1628 msgid "" "A ProgressBar is horizontal and left-to-right by " "default, but you can change it to a vertical progress bar by using the " "set_orientation() method." msgstr "" "En ProgressBar är som standard horisontell och " "vänster-till-höger, men du kan ändra den till en vertikal förloppsindikator " "genom att använda metoden set_orientation()." #. (itstool) path: section/para #: C/index-in.docbook:1634 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:1637 msgid "Activity Mode" msgstr "Aktivitetsläge" #. (itstool) path: section/para #: C/index-in.docbook:1639 #, fuzzy msgid "" "Besides indicating the amount of progress that has occurred, the progress " "bar can also be used to indicate that there is some activity; this is done " "by placing the progress bar in activity mode. In this " "mode, the progress bar displays a small rectangle which moves back and " "forth. Activity mode is useful in situations where the progress of an " "operation cannot be calculated as a value range (e.g., receiving a file of " "unknown length)." msgstr "" "Förutom att visa mängden framsteg som har nåtts så kan även " "förloppsindikatorn användas för att visa att aktivitet råder; detta görs " "genom att försätta förloppsindikatorn aktivitetsläge. I " "detta läge visar förloppsindikatorn en liten rektangel som rör sig fram och " "tillbaka. Aktivitetsläge är användbart i situationer när en operations " "förlopp inte kan beräknas som ett värdeintervall (t.ex. vid mottagande av en " "fil av okänd storlek)." #. (itstool) path: section/para #: C/index-in.docbook:1649 #, fuzzy msgid "" "To do this, you need to call the pulse() method at " "regular intervals. You can also choose the step size, with the " "set_pulse_step() method." msgstr "" "För att göra detta behöver du anropa metoden pulse() med regelbundna intervall. Du kan också välja stegstorleken med " "metoden set_pulse_step()." #. (itstool) path: section/para #: C/index-in.docbook:1655 #, fuzzy msgid "" "The progress bar can also display a configurable text string next to the " "bar, using the set_text() method." msgstr "" "Förloppsindikatorn kan också visa en konfigurerbar textsträng intill " "indikatorn med metoden set_text()." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1667 #, fuzzy msgctxt "_" msgid "" "external ref='figures/progressbar.png' md5='c7dcbf44476378ef1d0c601f619c7918'" msgstr "" "external ref='figures/progressbar.png' md5='c7dcbf44476378ef1d0c601f619c7918'" #. (itstool) path: section/para #: C/index-in.docbook:1671 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1677 C/index-in.docbook:1692 msgid "InfoBar" msgstr "InfoBar" #. (itstool) path: section/para #: C/index-in.docbook:1679 msgid "" "An InfoBar may show small items of information or ask " "brief questions. Unlike a Dialog, it appears at the " "top of the current window instead of opening a new window. Its API is very " "similar to the Gtk::Dialog API." msgstr "" "En InfoBar kan visa små informationsobjekt eller " "fråga korta frågor. Till skillnad från en Dialog " "dyker den upp högst upp i det aktuella fönstret i stället för att öppna ett " "nytt fönster. Dess API är väldigt likt API:t för Gtk::Dialog." #. (itstool) path: section/para #: C/index-in.docbook:1682 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1687 msgid "" "The InfoBar widget is deprecated since " "gtkmm 4.10. The example shows an info bar " "consisting of a Box with a Label and a Button." msgstr "" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1694 #, fuzzy msgctxt "_" msgid "" "external ref='figures/infobar.png' md5='4da1d3d7d3011221c3a1d896436b1931'" msgstr "" "external ref='figures/infobar.png' md5='cce31c49b5d951433103d2ab9a752477'" #. (itstool) path: section/para #: C/index-in.docbook:1698 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:1705 msgid "Tooltips" msgstr "Inforutor" #. (itstool) path: section/para #: C/index-in.docbook:1707 msgid "" "Tooltips are the little information windows that pop up when you leave your " "pointer over a widget for a few seconds. Use set_tooltip_text() to set a text string as a tooltip on any Widget. Gtk::Tooltip is used for more advanced " "tooltip usage, such as showing an image as well as text." msgstr "" "Inforutor är de små informationsfönster som poppar upp när du lämnar pekaren " "över en komponent i några sekunder. Använd set_tooltip_text() för att ställa in en textsträng som en inforuta på en " "Widget. Gtk::Tooltip används " "för mer avancerad inforuteanvändning, som att visa en bild såväl som text." #. (itstool) path: section/para #: C/index-in.docbook:1716 msgid "" "Widget Reference" msgstr "" "Widget-referens" #. (itstool) path: section/para #: C/index-in.docbook:1717 msgid "" "Tooltip Reference" msgstr "" "Tooltip-referens" #. (itstool) path: figure/title #: C/index-in.docbook:1723 #, fuzzy msgid "Tooltip" msgstr "Tooltip" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1725 #, fuzzy msgctxt "_" msgid "" "external ref='figures/tooltip.png' md5='85a18bdc5b7301f2d4d4a1886176a38c'" msgstr "" "external ref='figures/tooltip.png' md5='85a18bdc5b7301f2d4d4a1886176a38c'" #. (itstool) path: section/para #: C/index-in.docbook:1729 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:1736 msgid "Container Widgets" msgstr "Behållarkomponenter" #. (itstool) path: chapter/para #: C/index-in.docbook:1738 msgid "" "Container widgets, like other widgets, derive from Gtk::Widget. Some container widgets, such as Gtk::Grid " "can hold many child widgets, so these typically have more complex " "interfaces. Others, such as Gtk::Frame contain only " "one child widget." msgstr "" "Behållarkomponenter härleds som andra komponenter från Gtk::" "Widget. Vissa behållarkomponenter, som Gtk::Grid kan innehålla många underordnade komponenter, så de har vanligen " "mer komplexa gränssnitt. Andra, som Gtk::Frame " "innehåller bara en underordnad komponent." #. (itstool) path: section/title #: C/index-in.docbook:1746 msgid "Single-item Containers" msgstr "Enobjektsbehållare" #. (itstool) path: section/para #: C/index-in.docbook:1748 msgid "" "Most single-item container widgets have set_child() " "and unset_child() methods for the child widget. " "Gtk::Button and Gtk::Window " "are technically single-item containers, but we have discussed them already " "elsewhere." msgstr "" "De flesta behållarkomponenter för ett objekt har metoderna " "set_child() och unset_child() för den underordnade komponenten. Gtk::Button och Gtk::Window är tekniskt sett " "enobjektsbehållare, men vi har redan diskuterat dem på annat håll." #. (itstool) path: section/para #: C/index-in.docbook:1755 msgid "" "We also discuss the Gtk::Paned widget, which allows " "you to divide a window into two separate \"panes\". This widget actually " "contains two child widgets, but the number is fixed so it seems appropriate." msgstr "" "Vi kommer också diskutera komponenten Gtk::Paned som " "låter dig dela ett fönster i två separata ”paneler”. Denna komponent kommer " "faktiskt innehålla två underordnade komponenter, men antalet är fast så det " "verkar lämpligt." #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1762 C/index-in.docbook:1777 #, fuzzy msgid "Frame" msgstr "Frame" #. (itstool) path: section/para #: C/index-in.docbook:1764 #, fuzzy msgid "" "Frames can enclose one or a group of widgets within a box, optionally with a " "title. For instance, you might place a group of ToggleButtons or CheckButtons in a Frame." msgstr "" "Ramar kan omsluta en eller en grupp av komponenter i en ruta, valfritt med " "en titel. Exempelvis kan du placera en grupp med ToggleButton eller CheckButton i en Frame." #. (itstool) path: section/para #: C/index-in.docbook:1771 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1779 #, fuzzy msgctxt "_" msgid "external ref='figures/frame.png' md5='e7b49b5f57afa5c0d4c487c187f1be55'" msgstr "" "external ref='figures/frame.png' md5='e7b49b5f57afa5c0d4c487c187f1be55'" #. (itstool) path: section/para #: C/index-in.docbook:1783 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1789 C/index-in.docbook:1816 msgid "Paned" msgstr "Paned" #. (itstool) path: section/para #: C/index-in.docbook:1791 msgid "" "Panes divide a widget into two halves, separated by a moveable divider. The " "two halves (panes) can be oriented either horizontally (side by side) or " "vertically (one above the other)." msgstr "" "Paneler delar en komponent i två halvor, separerade av en flyttbar " "avskiljare. De två halvorna (panelerna) kan orienteras antingen horisontellt " "(sida vid sida) eller vertikalt (en ovanpå den andra)." #. (itstool) path: section/para #: C/index-in.docbook:1797 msgid "" "Unlike the other widgets in this section, pane widgets contain not one but " "two child widgets, one in each pane. Therefore, you should use " "set_start_child() and set_end_child() instead of a set_child() method." msgstr "" "Till skillnad från de andra komponenterna i detta avsnitt innehåller " "panelkomponenter inte en utan två underordnade komponenter, en i varje " "panel. Du ska därför använda set_start_child() och " "set_end_child() i stället för en " "set_child()-metod." #. (itstool) path: section/para #: C/index-in.docbook:1804 msgid "" "You can adjust the position of the divider using the " "set_position() method, and you will probably need " "to do so." msgstr "" "Du kan justera avskiljarens position genom att använda metoden " "set_position(), och kommer troligen behöva göra det." #. (itstool) path: section/para #: C/index-in.docbook:1810 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1818 #, fuzzy msgctxt "_" msgid "external ref='figures/paned.png' md5='874e9d11227d6d10d2ab7cb0b04de32d'" msgstr "" "external ref='figures/paned.png' md5='874e9d11227d6d10d2ab7cb0b04de32d'" #. (itstool) path: section/para #: C/index-in.docbook:1822 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1828 C/index-in.docbook:1861 msgid "ScrolledWindow" msgstr "ScrolledWindow" #. (itstool) path: section/para #: C/index-in.docbook:1830 msgid "" "ScrolledWindow widgets create a scrollable area. You " "can insert any type of widget into a ScrolledWindow, " "and it will be accessible regardless of its size by using the scrollbars. " "Note that ScrolledWindow is not a Gtk::" "Window despite the slightly misleading name." msgstr "" "ScrolledWindow-komponenter skapar ett rullningsbart " "område. Du kan infoga en komponent av valfri typ i ett " "ScrolledWindow, så kommer den vara åtkomlig oavsett " "dess storlek genom att använda rullningslisterna. Observera att " "ScrolledWindow inte är ett Gtk::Window trots det något missvisande namnet." #. (itstool) path: section/para #: C/index-in.docbook:1839 #, fuzzy msgid "" "Scrolled windows have scrollbar policies which " "determine whether the Scrollbars will be displayed. " "The policies can be set with the set_policy() " "method. The policy may be for instance Gtk::PolicyType::AUTOMATIC or Gtk::PolicyType::ALWAYS. Gtk::" "PolicyType::AUTOMATIC will cause the scrolled window to display " "the scrollbar only if the contained widget is larger than the visible area. " "Gtk::PolicyType::ALWAYS will cause the scrollbar to be " "displayed always." msgstr "" "Rullade fönster har rullningslistpolicyer som avgör " "huruvida Scrollbar-listerna kommer visas. Policyerna " "kan ställas in med metoden set_policy(). Policyn " "kan exempelvis vara Gtk::PolicyType::AUTOMATIC eller " "Gtk::PolicyType::ALWAYS. Gtk::PolicyType::" "AUTOMATIC kommer få det rullade fönstret att visa rullningslisten " "endast om den innehållna komponenten är större än det synliga området. " "Gtk::PolicyType::ALWAYS kommer få rullningslisten att " "alltid visas." #. (itstool) path: section/para #: C/index-in.docbook:1851 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1856 msgid "" "Here is a simple example that packs 100 toggle buttons into a " "ScrolledWindow. Try resizing the window to see the scrollbars react." msgstr "" "Här är ett enkelt exempel som packar 100 växlingsknappar i ett " "ScrolledWindow. Försök ändra storlek på fönstret för att se hur " "rullningslisterna reagerar." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1863 #, fuzzy msgctxt "_" msgid "" "external ref='figures/scrolledwindow.png' " "md5='b99f195d17b39197af733087e0e69def'" msgstr "" "external ref='figures/scrolledwindow.png' " "md5='b99f195d17b39197af733087e0e69def'" #. (itstool) path: section/para #: C/index-in.docbook:1867 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:1873 C/index-in.docbook:1896 msgid "AspectFrame" msgstr "AspectFrame" #. (itstool) path: section/para #: C/index-in.docbook:1875 msgid "" "The AspectFrame widget looks like a Frame widget, but it also enforces the aspect ratio (the ratio of the width to the height) of the child widget, adding " "extra space if necessary. For instance, this would allow you to display a " "photograph without allowing the user to distort it horizontally or " "vertically while resizing." msgstr "" "AspectFrame-komponenten ser ut som en " "Frame-komponent, men den upprätthåller även " "bildförhållandet (kvoten mellan bredden och höjden) för " "den underordnade komponenten, och lägger till extra utrymme om nödvändigt. " "Exempelvis skulle detta låta dig visa ett foto utan att användaren kan " "förvränga det horisontellt eller vertikalt då storleken ändras." #. (itstool) path: section/para #: C/index-in.docbook:1884 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:1889 msgid "" "The following program uses a Gtk::AspectFrame to " "present a drawing area whose aspect ratio will always be 2:1, no matter how " "the user resizes the top-level window." msgstr "" "Följande program använder en Gtk::AspectFrame för att " "presentera en rityta vars bildförhållande alltid kommer vara 2:1, oavsett " "hur användaren ändrar storleken på toppnivåfönstret." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:1898 #, fuzzy msgctxt "_" msgid "" "external ref='figures/aspectframe.png' md5='9d8aac9521789ed27036a97a22fedece'" msgstr "" "external ref='figures/aspectframe.png' md5='9d8aac9521789ed27036a97a22fedece'" #. (itstool) path: section/para #: C/index-in.docbook:1902 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:1908 msgid "Other Single-item Containers" msgstr "Andra enobjektsbehållare" #. (itstool) path: section/para #: C/index-in.docbook:1910 msgid "" "There are other single-item containers. See the reference documentation for " "a complete list. Here are links to some example programs that show " "containers, which are not mentioned elsewhere in this tutorial." msgstr "" "Det finns andra enobjektsbehållare. Se referensdokumentationen för en " "fullständig lista. Här är länkar till några exempelprogram som visar " "behållare som inte nämns någon annanstans i denna handledning." #. (itstool) path: section/para #: C/index-in.docbook:1916 msgid "" "Source Code, Expander" msgstr "" "Källkod, Expander" #. (itstool) path: section/para #: C/index-in.docbook:1917 msgid "" "Source Code, Popover" msgstr "" "Källkod, Popover" #. (itstool) path: section/title #: C/index-in.docbook:1924 msgid "Multiple-item Containers" msgstr "Flerobjektsbehållare" #. (itstool) path: section/para #: C/index-in.docbook:1926 #, fuzzy msgid "" "Multiple-item container widgets have other methods than " "set_child() and unset_child(). Different containers can have different methods for adding and " "removing child widgets. For instance, Gtk::Box has " "append() and remove() as " "well as other methods. The remove() method for " "multiple-item containers takes an argument, specifying which widget to " "remove." msgstr "" "Behållarkomponenter för flera objekt har andra metoder än " "set_child() och unset_child(). Olika behållare kan ha olika metoder för att lägga till och ta " "bort underordnade komponenter. Gtk::Box har " "exempelvis append() och remove() såväl som andra metoder. Metoden remove() för flerobjektsbehållare tar ett argument som anger vilken " "komponent som ska tas bort." #. (itstool) path: section/title #: C/index-in.docbook:1936 msgid "Packing" msgstr "Packning" #. (itstool) path: section/para #: C/index-in.docbook:1938 msgid "" "You've probably noticed that gtkmm windows seem " "\"elastic\" - they can usually be stretched in many different ways. This is " "due to the widget packing system." msgstr "" "Du har troligen upptäckt att gtkmm-fönster verkar " "”elastiska” - de kan vanligen sträckas ut på många olika sätt. Det här är på " "grund av systemet för komponentpackning." #. (itstool) path: section/para #: C/index-in.docbook:1943 msgid "" "Many GUI toolkits require you to precisely place widgets in a window, using " "absolute positioning, often using a visual editor. This leads to several " "problems:" msgstr "" "Många verktygslådor för grafiska användargränssnitt kräver att du precist " "placerar komponenter i ett fönster med absolut positionering, ofta med en " "visuell redigerare. Detta leder till flera problem:" #. (itstool) path: listitem/para #: C/index-in.docbook:1950 msgid "" "The widgets don't rearrange themselves when the window is resized. Some " "widgets are hidden when the window is made smaller, and lots of useless " "space appears when the window is made larger." msgstr "" "Komponenterna arrangerar inte om sig själva när fönstrets storlek ändras. " "Vissa komponenter döljs när fönstret görs mindre, och mycket onödigt utrymme " "uppstår när fönstret görs större." #. (itstool) path: listitem/para #: C/index-in.docbook:1954 msgid "" "It's impossible to predict the amount of space necessary for text after it " "has been translated to other languages, or displayed in a different font. On " "Unix it is also impossible to anticipate the effects of every theme and " "window manager." msgstr "" "Det är omöjligt att förutse mängden utrymme som krävs för text efter att den " "har översatts till andra språk, eller visas med ett annat typsnitt. På Unix " "är det också omöjligt att förutse effekterna av varje tema och " "fönsterhanterare." #. (itstool) path: listitem/para #: C/index-in.docbook:1958 msgid "" "Changing the layout of a window \"on the fly\", to make some extra widgets " "appear, for instance, is complex. It requires tedious recalculation of every " "widget's position." msgstr "" "Att ändra layouten för ett fönster ”i farten”, exempelvis för att få några " "extra komponenter att visas, är komplext. Det kräver tröttsam omräkning av " "varje komponents position." #. (itstool) path: section/para #: C/index-in.docbook:1964 #, fuzzy msgid "" "gtkmm uses the packing system to solve these " "problems. Rather than specifying the position and size of each widget in the " "window, you can arrange your widgets in rows, columns, and/or grids. " "gtkmm can size your window automatically, based " "on the sizes of the widgets it contains. And the sizes of the widgets are, " "in turn, determined by the amount of text they contain, or the minimum and " "maximum sizes that you specify, and/or how you have requested that the " "available space should be shared between sets of widgets. You can perfect " "your layout by specifying margins and centering values for each of your " "widgets. gtkmm then uses all this information to " "resize and reposition everything sensibly and smoothly when the user " "manipulates the window." msgstr "" "gtkmm använder packningssystemet för att lösa " "dessa problem. Snarare än att ange position och storlek för varje komponent " "i fönstret så kan du arrangera dina komponenter i rader, kolumner och/eller " "rutnät. gtkmm kan ändra storlek på ditt fönster " "automatiskt, baserat på storlekarna på komponenterna det innehåller. " "Storlekarna på komponenterna avgörs i sin tur av mängden text de innehåller, " "eller de minsta och största storlekarna som du anger, och/eller hur du har " "begärt att tillgängligt utrymme ska delas mellan uppsättningar av " "komponenter. gtkmm använder sedan all denna " "information för att ändra storlek och position på allt på ett rimligt och " "smidigt sätt när användaren manipulerar fönstret." # TODO: flavors #. (itstool) path: section/para #: C/index-in.docbook:1973 #, fuzzy msgid "" "gtkmm arranges widgets hierarchically, using " "containers. A container widget contains other widgets. " "Most gtkmm widgets are containers. Windows, " "Notebook tabs, and Buttons are all container widgets. There are two flavors " "of containers: single-child containers and multiple-child containers. Most " "container widgets in gtkmm are single-child " "containers, including Gtk::Window." msgstr "" "gtkmm arrangerar komponenter hierarkiskt med " "behållare. En behållarkomponent innehåller andra " "komponenter. De flesta gtkmm-komponenter är " "behållare. Fönster, anteckningsblocksflikar och knappar är alla " "behållarkomponenter. Det finns två sorters behållare: behållare med en " "underordnad och de med flera underordnade. De flesta behållarkomponenter i " "gtkmm är behållare med en underordnad, inklusive " "Gtk::Window." #. (itstool) path: section/para #: C/index-in.docbook:1982 msgid "" "Yes, that's correct: a Window can contain at most one widget. How, then, can " "we use a window for anything useful? By placing a multiple-child container " "in the window. The most useful container widgets are Gtk::Grid and Gtk::Box." msgstr "" "Det stämmer: ett Window kan innehålla högst en komponent. Men hur kan vi då " "använda ett fönster för något användbart? Genom att placera en " "flerobjektsbehållare i fönstret. De mest användbara behållarkomponenterna är " "Gtk::Grid och Gtk::Box." #. (itstool) path: listitem/para #: C/index-in.docbook:1993 msgid "" "Gtk::Grid arranges its child widgets in rows and " "columns. Use attach() and " "attach_next_to() to insert child widgets." msgstr "" "Gtk::Grid arrangerar sina underordnade komponenter i " "rader och kolumner. Använd attach() och " "attach_next_to() för att infoga underordnade " "komponenter." #. (itstool) path: listitem/para #: C/index-in.docbook:2001 msgid "" "Gtk::Box arranges its child widgets vertically or " "horizontally. Use append() to insert child widgets." msgstr "" "Gtk::Box arrangerar sina underordnade komponenter " "vertikalt eller horisontellt. Använd append() för " "att infoga underordnade komponenter." #. (itstool) path: section/para #: C/index-in.docbook:2009 msgid "There are several other containers, which we will also discuss." msgstr "Det finns flera andra behållare som vi också kommer diskutera." #. (itstool) path: section/para #: C/index-in.docbook:2013 #, fuzzy msgid "" "If you've never used a packing toolkit before, it can take some getting used " "to. You'll probably find, however, that you don't need to rely on visual " "form editors quite as much as you might with other toolkits." msgstr "" "Om du aldrig använt en packningsverktygslåda förut kan det ta tid att vänja " "sig vid. Du kommer dock troligen se att du inte kommer förlita dig på " "visuella redigerare riktigt lika mycket som du kan göra med andra " "verktygslådor." #. (itstool) path: section/title #: C/index-in.docbook:2023 msgid "An improved Hello World" msgstr "Ett förbättrat Hej världen" #. (itstool) path: section/para #: C/index-in.docbook:2025 msgid "" "Let's take a look at a slightly improved helloworld, " "showing what we've learnt." msgstr "" "Låt oss ta en titt på ett något förbättrat helloworld som " "visar vad vi lärt oss." #. (itstool) path: figure/title #: C/index-in.docbook:2030 msgid "Hello World 2" msgstr "Hej världen 2" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2032 #, fuzzy msgctxt "_" msgid "" "external ref='figures/helloworld2.png' md5='b16c41a2b1206bb0a5a3e1e488e198f8'" msgstr "" "external ref='figures/helloworld2.png' md5='b16c41a2b1206bb0a5a3e1e488e198f8'" #. (itstool) path: section/para #: C/index-in.docbook:2036 msgid "" "Source Code" msgstr "" "Källkod" # TODO: behavior #. (itstool) path: section/para #: C/index-in.docbook:2038 #, fuzzy msgid "" "After building and running this program, try resizing the window to see the " "behavior. Also, try playing with set_expand(), " "set_hexpand(), set_vexpand(), set_halign() and " "set_valign() while reading the Boxes section." msgstr "" "Försök efter att ha byggt och kört detta program att ändra storlek på " "fönstret för att se beteendet. Pröva även leka med set_expand(), set_hexpand(), " "set_vexpand(), set_halign() och set_valign() medan du läser " "avsnittet Boxar." #. (itstool) path: section/title #: C/index-in.docbook:2049 #, fuzzy msgid "Boxes" msgstr "Boxar" #. (itstool) path: section/para #: C/index-in.docbook:2051 #, fuzzy msgid "" "Most packing uses boxes as in the above example. These are invisible " "containers into which we can pack our widgets. When packing widgets into a " "horizontal box, the objects are inserted horizontally from left to right. In " "a vertical box, widgets are packed from top to bottom. You may use any " "combination of boxes inside or beside other boxes to create the desired " "effect." msgstr "" "Den mesta packningen använder boxar som i exemplet ovan. Dessa är osynliga " "behållare som vi kan packa våra komponenter i. När komponenter packas i en " "horisontell box sätts objekten in horisontellt från vänster till höger. I en " "horisontell box packas komponenter uppifrån och ner. Du kan använda valfri " "kombination av boxar inuti eller bredvid andra boxar för att skapa önskade " "effekt." #. (itstool) path: section/title #: C/index-in.docbook:2061 msgid "Adding widgets" msgstr "Lägga till komponenter" #. (itstool) path: section/title #: C/index-in.docbook:2063 msgid "Per-child packing options" msgstr "Packningsalternativ per underordnad" #. (itstool) path: section/para #: C/index-in.docbook:2064 msgid "" "The append() method places widgets inside these " "containers. It will start at the top and work its way down in a " "Box with vertical orientation, or pack left to right " "in a Box with horizontal orientation. If it's " "inconvenient to add widgets in this order, use " "insert_child_after() or " "insert_child_at_start(). We will use " "append() in our examples." msgstr "" "Metoden append() placerar komponenter inuti dessa " "behållare. Den kommer starta uppifrån och arbeta sig nedåt i en " "Box med vertikal orientering, eller packa från " "vänster till höger i en Box med horisontell " "orientering. Om det är opraktiskt att lägga till komponenter i denna ordning " "kan du använda insert_child_after() eller " "insert_child_at_start(). Vi kommer använda " "append() i våra exempel." #. (itstool) path: section/para #: C/index-in.docbook:2074 #, fuzzy msgid "" "There are several options governing how widgets are to be packed, and this " "can be confusing at first. You can modify the packing by using " "set_expand(), set_hexpand(), set_vexpand(), " "set_halign(), set_valign() " "and/or set_margin() on the child widgets. If you " "have difficulties, then it is sometimes a good idea to play with the " "Cambalache GUI designer to see what is possible. " "You can then use the Gtk::Builder API to load your " "GUI at runtime." msgstr "" "Det finns flera alternativ som styr hur komponenter ska packas, och detta " "kan till en början vara förvirrande. Du kan ändra packningen genom att " "använda set_expand(), set_hexpand(), set_vexpand(), " "set_halign(), set_valign() " "och/eller set_margin() på de underordnade " "komponenterna. Om du har svårigheter är det ibland en god idé att leka med " "GUI-designern glade för att se vad som är " "möjligt. Du kan till och med bestämma dig för att använda Gtk::" "Builder-API:t för att läsa in ditt GUI vid körning." #. (itstool) path: section/para #: C/index-in.docbook:2085 msgid "There are basically five different styles, as shown in this picture:" msgstr "Det finns i grunden fem olika stilar som kan ses i denna bild:" #. (itstool) path: figure/title #: C/index-in.docbook:2091 #, fuzzy msgid "Box Packing 1" msgstr "Boxpackning 1" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2093 #, fuzzy msgctxt "_" msgid "" "external ref='figures/box_packing1.png' " "md5='dedb723a5ca690ed542d09361fc8ad4a'" msgstr "" "external ref='figures/box_packing1.png' " "md5='dedb723a5ca690ed542d09361fc8ad4a'" #. (itstool) path: section/para #: C/index-in.docbook:2097 #, fuzzy msgid "" "Each line contains one horizontal Box with several " "buttons. Each of the buttons on a line is packed into the Box with the same arguments to the set_hexpand(), set_halign(), " "set_margin_start() and " "set_margin_end() methods." msgstr "" "Varje rad innehåller en horisontell Box med flera " "knappar. Var och en av knapparna på en rad packas i Boxen med samma argument till metoderna set_hexpand(), set_halign(), " "set_margin_start() och " "set_margin_end() methods." #. (itstool) path: section/para #: C/index-in.docbook:2106 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:2111 #, fuzzy msgid "Per-container packing options" msgstr "Packningsalternativ per behållare" #. (itstool) path: section/para #: C/index-in.docbook:2112 msgid "" "Here's the constructor for the Box widget, and " "methods that set per-container packing options:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:2115 #, no-wrap msgid "" "Gtk::Box(Gtk::Orientation orientation = Gtk::Orientation::HORIZONTAL, int spacing = 0);\n" "void set_orientation(Gtk::Orientation orientation);\n" "void set_spacing(int spacing);\n" "void set_homogeneous(bool homogeneous = true);" msgstr "" "Gtk::Box(Gtk::Orientation orientation = Gtk::Orientation::HORIZONTAL, int spacing = 0);\n" "void set_orientation(Gtk::Orientation orientation);\n" "void set_spacing(int spacing);\n" "void set_homogeneous(bool homogeneous = true);" #. (itstool) path: section/para #: C/index-in.docbook:2119 #, fuzzy msgid "" "Passing true to set_homogeneous() will cause all of the contained widgets to be the same size. " "spacing is a (minimum) number of pixels to leave " "between each widget." msgstr "" "Här är konstruktorn för komponenten Box, och metoder " "som ställer in packningsalternativ per behållare: <_:programlisting-1/> Att " "skicka true till set_homogeneous() kommer få alla inneslutna komponenter att vara samma storlek. " "spacing är ett (minsta) antal bildpunkter att lämna " "mellan varje komponent." #. (itstool) path: section/para #: C/index-in.docbook:2125 #, fuzzy msgid "" "What's the difference between spacing (set when the box is created) and " "margins (set separately for each child widget)? Spacing is added between " "objects, and margins are added on one or more sides of a widget. The " "following figure should make it clearer. The shown margins are the left and " "right margins of each button in the row." msgstr "" "Vad är skillnaden mellan utrymme (ställs in när boxen skapas) och marginaler " "(ställs in separat för varje underordnad komponent)? Utrymme läggs in mellan " "objekt, och marginaler läggs till på en eller flera sidor av en komponent. " "Följande figur bör göra det tydligare. De visade marginalerna är vänster- " "och högermarginalerna för varje knapp i raden." #. (itstool) path: figure/title #: C/index-in.docbook:2134 #, fuzzy msgid "Box Packing 2" msgstr "Boxpackning 2" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2136 #, fuzzy msgctxt "_" msgid "" "external ref='figures/box_packing2.png' " "md5='48e64123d27cc8e66137c8a2edf9589f'" msgstr "" "external ref='figures/box_packing2.png' " "md5='48e64123d27cc8e66137c8a2edf9589f'" #. (itstool) path: section/title #: C/index-in.docbook:2144 msgid "Gtk::Application and command-line options" msgstr "Gtk::Application och kommandoradsflaggor" #. (itstool) path: section/para #: C/index-in.docbook:2146 msgid "" "The following example program requires a command-line option. The source " "code shows two ways of handling command-line options in combination with " "Gtk::Application." msgstr "" "Följande exempelprogram kräver en kommandoradsflagga. Källkoden visar två " "sätt att hantera kommandoradsflaggor i kombination med Gtk::" "Application." #. (itstool) path: listitem/para #: C/index-in.docbook:2152 msgid "" "Handle the options in main() and hide them from " "Gtk::Application by setting argc = 1 in the call to Gtk::Application::run()." msgstr "" "Hantera flaggorna i main() och dölj dem från " "Gtk::Application genom att ställa in argc = " "1 i anropet till Gtk::Application::run()." #. (itstool) path: listitem/para #: C/index-in.docbook:2158 msgid "" "Give all command-line options to Gtk::Application::run() and add the flag Gio::Application::Flags::" "HANDLES_COMMAND_LINE to Gtk::Application::create(). Connect a signal handler to the command_line " "signal, and handle the command-line options in the signal handler." msgstr "" "Ge alla kommandoradsflaggor till Gtk::Application::run() och lägg till flaggan Gio::Application::Flags::" "HANDLES_COMMAND_LINE till Gtk::Application::create(). Anslut en signalhanterare till signalen command_line, och hantera kommandoradsflaggorna i signalhanteraren." #. (itstool) path: listitem/para #: C/index-in.docbook:2165 #, fuzzy msgid "" "You must set the optional parameter after = false in the " "call to signal_command_line().connect(), because your " "signal handler must be called before the default signal handler. You must " "also call Gio::Application::activate() in the " "signal handler, unless you want your application to exit without showing its " "main window. (Gio::Application is a base class of " "Gtk::Application.)" msgstr "" "Du måste ställa in den valfria parametern after = false i " "anropet till signal_command_line().connect(), för din " "signalhanterare måste anropas för standardsignalhanteraren. Du måste också " "anropa Gio::Application::activate() i " "signalhanteraren om du inte vill att ditt program ska avslutas utan att visa " "sitt huvudfönster. (Gio::Application är en basklass " "för Gtk::Application.)" #. (itstool) path: section/para #: C/index-in.docbook:2179 #, fuzzy msgid "" "Here is the source code for the example that produced the screenshots above. " "When you run this example, provide a number between 1 and 3 as a command-" "line option, to see different packing options in use." msgstr "" "Här är källkoden för exemplet som skapade skärmbilderna ovan. Skicka när du " "kör detta exempel med ett tal mellan 1 och 3 som en kommandoradsflagga för " "att se då olika packningsalternativ används." #. (itstool) path: section/para #: C/index-in.docbook:2182 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:2188 C/index-in.docbook:2218 msgid "Grid" msgstr "Grid" #. (itstool) path: section/para #: C/index-in.docbook:2190 msgid "" "A Grid dynamically lays out child widgets in rows and " "columns. The dimensions of the grid do not need to be specified in the " "constructor." msgstr "" "Ett Grid organiserar dynamiskt underordnade " "komponenter i rader och kolumner. Dimensionerna på rutnätet behöver inte " "anges i konstruktorn." #. (itstool) path: section/para #: C/index-in.docbook:2195 msgid "" "Child widgets can span multiple rows or columns, using attach(), or added next to an existing widget inside the grid with " "attach_next_to(). Individual rows and columns of " "the grid can be set to have uniform height or width with " "set_row_homogeneous() and " "set_column_homogeneous()." msgstr "" "Underordnade komponenter kan spänna över flera rader eller kolumner med " "attach(), eller läggas intill en befintlig " "komponent i rutnätet med attach_next_to(). " "Individuella rader och kolumner i rutnätet kan ställas in att ha enhetlig " "höjd eller bredd med set_row_homogeneous() och " "set_column_homogeneous()." #. (itstool) path: section/para #: C/index-in.docbook:2202 #, fuzzy msgid "" "You can set the margin and expand " "properties of the child Widgets to control their " "spacing and their behavior when the Grid is resized." msgstr "" "Du kan sätta egenskaperna för marginal och " "expansion för underordnade Widget för att styra deras utrymme och deras beteende när vår Grid får " "storleken ändrad." #. (itstool) path: section/para #: C/index-in.docbook:2206 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:2210 msgid "" "This example creates a window with three buttons in a grid. The first two " "buttons are in the upper row, from left to right. A third button is attached " "underneath the first button, in a new lower row, spanning two columns." msgstr "" "Detta exempel skapar ett fönster med tre knappar i ett rutnät. De första två " "knapparna är i den övre raden, från vänster till höger. En tredje knapp " "infogas under den första knappen i en ny lägre rad, och spänner över två " "kolumner." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2220 msgctxt "_" msgid "external ref='figures/grid.png' md5='18031e926d6082207f18de1b08cd85ae'" msgstr "external ref='figures/grid.png' md5='18031e926d6082207f18de1b08cd85ae'" #. (itstool) path: section/para #: C/index-in.docbook:2224 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:2230 C/index-in.docbook:2266 msgid "Notebook" msgstr "Notebook" #. (itstool) path: section/para #: C/index-in.docbook:2232 #, fuzzy msgid "" "A Notebook has a set of stacked pages, each of which contains widgets. Labelled tabs " "allow the user to select the pages. Notebooks allow " "several sets of widgets to be placed in a small space, by only showing one " "page at a time. For instance, they are often used in preferences dialogs." msgstr "" "En Notebook har en hög med sidor, " "var och en innehållande komponenter. Etiketterade flikar " "låter användaren välja sidorna. En Notebook möjliggör " "för flera uppsättningar komponenter att placeras i ett litet utrymme genom " "att bara visa en sida åt gången. De används exempelvis ofta i " "inställningsdialoger." #. (itstool) path: section/para #: C/index-in.docbook:2241 #, fuzzy msgid "" "Use the append_page(), prepend_page() and insert_page() methods to add tabbed " "pages to the Notebook, supplying the child widget and the " "name for the tab." msgstr "" "Använd metoderna append_page(), " "prepend_page() och insert_page() för att lägga till sidor med flik till vår Notebook, med den underordnade komponenten och namnet på fliken." #. (itstool) path: section/para #: C/index-in.docbook:2248 msgid "" "To discover the currently visible page, use the " "get_current_page() method. This returns the page " "number, and then calling get_nth_page() with that " "number will give you a pointer to the actual child widget." msgstr "" "Använd metoden get_current_page() för att avgöra " "vilken sida som är synlig för tillfället. Detta returnerar sidnumret, och " "att sedan anropa get_nth_page() med det numret " "kommer ge dig en pekare till den faktiska underordnade komponenten." #. (itstool) path: section/para #: C/index-in.docbook:2255 #, fuzzy msgid "" "To programmatically change the selected page, use the " "set_current_page() method." msgstr "" "Använd metoden set_current_page() för att " "programmatiskt ändra den valda sidan." #. (itstool) path: section/para #: C/index-in.docbook:2260 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2268 #, fuzzy msgctxt "_" msgid "" "external ref='figures/notebook.png' md5='b46c25388d4c250b0ab737f71f82d81b'" msgstr "" "external ref='figures/notebook.png' md5='b46c25388d4c250b0ab737f71f82d81b'" #. (itstool) path: section/para #: C/index-in.docbook:2272 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:2279 C/index-in.docbook:2313 msgid "Assistant" msgstr "Assistant" #. (itstool) path: note/para #: C/index-in.docbook:2281 msgid "" "Gtk::Assistant is deprecated since " "gtkmm 4.10. There is no replacement in " "gtkmm. libadwaita (a C library) has replacement " "parts (like AdwCarousel). In some cases, a Gtk::Notebook might be an acceptable replacement." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:2287 #, fuzzy msgid "" "An Assistant splits a complex operation into steps. " "Each step is a page, containing a header, a child widget and an action area. " "The Assistant's action area has navigation buttons which update " "automatically depending on the type of the page, set with " "set_page_type()." msgstr "" "En Assistant delar upp en komplex operation i steg. " "Varje steg är en sida som innehåller en rubrik, en underordnad komponent och " "ett åtgärdsområde. Åtgärdsområdet för denna Assistant har navigeringsknappar " "som uppdaterar sig automatiskt beroende på typen av sida, inställd med " "set_page_type()." #. (itstool) path: section/para #: C/index-in.docbook:2291 #, fuzzy msgid "" "Use the append_page(), prepend_page and insert_page() methods to add pages " "to the Assistant, supplying the child widget for each " "page." msgstr "" "Använd metoderna append_page(), " "prepend_page och insert_page() för att lägga till sidor till vår Assistant, med den underordnade komponenten för varje sida." #. (itstool) path: section/para #: C/index-in.docbook:2295 #, fuzzy msgid "" "To determine the currently-visible page, use the " "get_current_page() method, and pass the result to " "get_nth_page(), which returns a pointer to the " "actual widget. To programmatically change the current page, use the " "set_current_page() method." msgstr "" "Använd metoden get_current_page() för att avgöra " "vilken sida som är synlig för tillfället, och skicka resultatet till " "get_nth_page() som returnerar en pekare till den " "faktiska underordnade komponenten. Använd metoden " "set_current_page() för att programmatiskt ändra den " "aktuella sidan." #. (itstool) path: section/para #: C/index-in.docbook:2299 msgid "" "To set the title of a page, use the set_page_title() method." msgstr "" "Använd metoden set_page_title() för att ställa in " "titeln för en sida." #. (itstool) path: section/para #: C/index-in.docbook:2303 #, fuzzy msgid "" "To add widgets to the action area, use the add_action_widget() method. They will be packed alongside the default buttons. Use " "the remove_action_widget() method to remove widgets." msgstr "" "Använd metoden add_action_widget() för att lägga " "till komponenter till åtgärdsområdet. De kommer packas bredvid " "standardknapparna. Använd metoden remove_action_widget() för att ta bort komponenter." #. (itstool) path: section/para #: C/index-in.docbook:2307 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2315 #, fuzzy msgctxt "_" msgid "" "external ref='figures/assistant.png' md5='14f588bf7a1dde5e329e5478efe3ae3f'" msgstr "" "external ref='figures/assistant.png' md5='14f588bf7a1dde5e329e5478efe3ae3f'" #. (itstool) path: section/para #: C/index-in.docbook:2319 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:2326 msgid "Other Multi-item Containers" msgstr "Andra flerobjektsbehållare" #. (itstool) path: section/para #: C/index-in.docbook:2328 msgid "" "There are other multi-item containers. See the reference documentation for a " "complete list. Here are links to some example programs that show containers, " "which are not mentioned elsewhere in this tutorial." msgstr "" "Det finns andra flerobjektsbehållare. Se referensdokumentationen för en " "fullständig lista. Här är länkar till några exempelprogram som visar " "behållare som inte nämns någon annanstans i denna handledning." #. (itstool) path: section/para #: C/index-in.docbook:2334 msgid "" "Source Code, ActionBar" msgstr "" "Källkod, ActionBar" #. (itstool) path: section/para #: C/index-in.docbook:2335 #, fuzzy #| msgid "" #| "Source Code, FlowBox" msgid "" "Source Code, FlowBox" msgstr "" "Källkod, FlowBox" #. (itstool) path: chapter/title #: C/index-in.docbook:2342 msgid "ListView, GridView, ColumnView" msgstr "" #. (itstool) path: chapter/para #: C/index-in.docbook:2344 msgid "" "Lists are intended to be used whenever developers want to display many " "objects in roughly the same way. They are perfectly fine to be used for very " "short lists of only 2 or 3 items, but generally scale fine to thousands of " "items." msgstr "" #. (itstool) path: chapter/para #: C/index-in.docbook:2350 msgid "" "Lists are meant to be used with changing data, both with the items " "themselves changing as well as the list adding and removing items. Of " "course, they work just as well with static data." msgstr "" #. (itstool) path: chapter/para #: C/index-in.docbook:2356 #, fuzzy msgid "" "The List Widget Overview chapter in the GTK documentation contains " "more information about list widgets." msgstr "" "Kapitlet Input Handling i GTK-dokumentationen beskriver hantering av " "användarinmatning mer detaljerat." #. (itstool) path: chapter/para #: C/index-in.docbook:2361 #, fuzzy #| msgid "" #| "Some TreeView examples are shown here. There are " #| "more examples in the treeview " #| "directory in gtkmm-documentation's " #| "examples." msgid "" "Some examples are shown in this chapter. There are more examples in the " "listmodelviews directory in " "gtkmm-documentation's examples." msgstr "" "Några TreeView-exempel visas här. Det finns mer " "exempel i treeview-katalogen i gtkmm-documentations exempel." #. (itstool) path: section/title #: C/index-in.docbook:2367 #, fuzzy msgid "The Data Model" msgstr "Modellen" #. (itstool) path: section/para #: C/index-in.docbook:2369 msgid "" "The data model is a class that implements the Gio::ListModel interface. Examples of such classes are Gio::" "ListStore (not to be confused with the deprecated " "Gtk::ListStore), Gtk:StringList, Gtk:DirectoryList and Pango::" "FontMap." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:2377 #, fuzzy #| msgid "" #| "The model for a ComboBox can be defined and filled exactly as for a " #| "TreeView. For instance, you might derive a " #| "ComboBox class with one integer and one text column, like so:" msgid "" "The elements in a model are called items. All items are " "instances of a subclass of Glib::Object. For " "instance, you might have a ColumnView with one " "integer and one text column, like so:" msgstr "" "Modellen för en ComboBox kan definieras och fyllas i exakt som för en " "TreeView. Exempelvis kan du härleda en ComboBox med " "ett heltal och en textkolumn, så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2383 C/index-in.docbook:3385 #, no-wrap msgid "" "class ModelColumns : public Glib::Object\n" "{\n" "public:\n" " int m_col_id;\n" " Glib::ustring m_col_name;\n" "\n" " static Glib::RefPtr<ModelColumns> create(\n" " int col_id, const Glib::ustring& col_name)\n" " {\n" " return Glib::make_refptr_for_instance<ModelColumns>(\n" " new ModelColumns(col_id, col_name));\n" " }\n" "\n" "protected:\n" " ModelColumns(int col_id, const Glib::ustring& col_name)\n" " : m_col_id(col_id), m_col_name(col_name)\n" " {}\n" "};\n" "\n" "Glib::RefPtr<Gio::ListStore<ModelColumns>> m_ListStore;\n" msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:2405 msgid "" "Every item in a model has a position which is the unsigned integer that " "describes where in the model the item is located. The first item in a model " "is at position 0. The position of an item can of course change as other " "items are added to or removed from the model." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:2411 #, fuzzy #| msgid "" #| "Gio::Resource Reference" msgid "" "Gio::ListStore Reference" msgstr "" "Referens för Gio::Resource" #. (itstool) path: section/para #: C/index-in.docbook:2412 #, fuzzy #| msgid "" #| "Widget Reference" msgid "" "StringList Reference" msgstr "" "Widget-referens" #. (itstool) path: section/para #: C/index-in.docbook:2413 #, fuzzy #| msgid "" #| "Widget Reference" msgid "" "DirectoryList Reference" msgstr "" "Widget-referens" #. (itstool) path: section/title #: C/index-in.docbook:2417 #, fuzzy msgid "The Selection Model" msgstr "Selection" #. (itstool) path: section/para #: C/index-in.docbook:2419 #, fuzzy #| msgid "" #| "If you use an Gtk::ApplicationWindow, you don't " #| "have to create your own action group. Gio::ActionGroup and Gio::ActionMap are base classes of " #| "Gtk::ApplicationWindow." msgid "" "The selection model is a class that implements the Gtk::" "SelectionModel interface. You can choose between " "NoSelection, SingleSelection " "and MultiSelection." msgstr "" "Om du använder ett Gtk::ApplicationWindow behöver du " "inte skapa din egen åtgärdsgrupp. Gio::ActionGroup " "och Gio::ActionMap är basklasser för Gtk::" "ApplicationWindow." #. (itstool) path: section/para #: C/index-in.docbook:2424 #, fuzzy #| msgid "" #| "Tooltip Reference" msgid "" "NoSelection Reference" msgstr "" "Tooltip-referens" #. (itstool) path: section/para #: C/index-in.docbook:2425 #, fuzzy #| msgid "" #| "Widget Reference" msgid "" "SingleSelection Reference" msgstr "" "Widget-referens" #. (itstool) path: section/para #: C/index-in.docbook:2426 #, fuzzy #| msgid "" #| "Gtk::Application Reference" msgid "" "MultiSelection Reference" msgstr "" "Referens för Gtk::Application" #. (itstool) path: section/title #: C/index-in.docbook:2430 #, fuzzy msgid "The Factory" msgstr "Inmatningen" #. (itstool) path: section/para #: C/index-in.docbook:2432 msgid "" "Data from the data model is added to the view by a factory, which is a " "subclass of ListItemFactory. There is only one such " "subclass in gtkmm, " "SignalListItemFactory. Data from the model is added " "to the view with signal handlers connected to a " "SignalListItemFactory." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:2438 #, fuzzy #| msgid "" #| "Widget Reference" msgid "" "SignalListItemFactory Reference" msgstr "" "Widget-referens" #. (itstool) path: section/title #: C/index-in.docbook:2442 C/index-in.docbook:2813 C/index-in.docbook:3866 #, fuzzy msgid "The View" msgstr "View" #. (itstool) path: section/para #: C/index-in.docbook:2444 #, fuzzy msgid "" "The View is the widget that displays the model data and allows the user to " "interact with it. The View can show all of the model's columns, or just " "some, and it can show them in various ways." msgstr "" "Vyn är den faktiska komponenten (Gtk::TreeView) som " "visar data för modellen (Gtk::TreeModel) och låter " "användaren interagera med dem. Vyn kan visa alla modellens kolumner, eller " "bara några, och den kan visa dem på olika sätt." #. (itstool) path: section/para #: C/index-in.docbook:2450 msgid "" "An important requirement for views (especially views of long lists) is that " "they need to know which items are not visible so they can be recycled. Views " "achieve that by implementing the Scrollable interface " "and expecting to be placed directly into a ScrolledWindow." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:2457 msgid "There are different view widgets to choose from." msgstr "" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:2462 C/index-in.docbook:2474 #, fuzzy #| msgid "TextView" msgid "ListView" msgstr "TextView" #. (itstool) path: section/para #: C/index-in.docbook:2464 #, fuzzy #| msgid "" #| "The Gtk::TreeView widget can contain lists or " #| "trees of data, in columns." msgid "" "The ListView shows a 1-dimensional list with one " "column." msgstr "" "Komponenten Gtk::TreeView kan innehålla listor eller " "träd med data i kolumner." #. (itstool) path: section/para #: C/index-in.docbook:2468 #, fuzzy #| msgid "" #| "Reference" msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2476 #, fuzzy msgctxt "_" msgid "" "external ref='figures/listmodel_listview.png' " "md5='5e49d159f43fdc5242998713bdedafc8'" msgstr "" "external ref='figures/textview.png' md5='451e30f66cc32c4231bb6bc442cf0d2f'" #. (itstool) path: section/para #: C/index-in.docbook:2480 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:2486 C/index-in.docbook:2498 #, fuzzy #| msgid "Grid" msgid "GridView" msgstr "Grid" #. (itstool) path: section/para #: C/index-in.docbook:2488 #, fuzzy #| msgid "The Tag class has many other properties." msgid "The GridView shows a 2-dimensional grid." msgstr "Klassen Tag har många andra egenskaper." #. (itstool) path: section/para #: C/index-in.docbook:2492 #, fuzzy #| msgid "" #| "Reference" msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2500 #, fuzzy msgctxt "_" msgid "" "external ref='figures/listmodel_gridview.png' " "md5='0d87e962deacc452f32513f0d5e07e04'" msgstr "" "external ref='figures/treeview_list.png' " "md5='60e5e4ecb284d0cdc53373fe0ec858ee'" #. (itstool) path: section/para #: C/index-in.docbook:2504 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:2510 C/index-in.docbook:2522 msgid "ColumnView" msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:2512 #, fuzzy #| msgid "" #| "The Gtk::TreeView widget can contain lists or " #| "trees of data, in columns." msgid "" "The ColumnView shows a 1-dimensional list with one or " "more columns." msgstr "" "Komponenten Gtk::TreeView kan innehålla listor eller " "träd med data i kolumner." #. (itstool) path: section/para #: C/index-in.docbook:2516 #, fuzzy #| msgid "" #| "Reference" msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2524 #, fuzzy msgctxt "_" msgid "" "external ref='figures/listmodel_columnview.png' " "md5='fd8445f1904773397a7252bf843e2c38'" msgstr "" "external ref='figures/aspectframe.png' md5='9d8aac9521789ed27036a97a22fedece'" #. (itstool) path: section/para #: C/index-in.docbook:2528 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:2535 C/index-in.docbook:3133 msgid "Sorting" msgstr "Sortering" #. (itstool) path: section/para #: C/index-in.docbook:2537 msgid "" "The list can be sorted by wrapping it in a SortListModel. There are two ways to do this." msgstr "" #. (itstool) path: listitem/para #: C/index-in.docbook:2542 msgid "" "In a ColumnView, get the ColumnViewSorter from the ColumnView and set it to the " "SortListModel. Set a Sorter to " "each ColumnViewColumn. Then the user of your app can " "sort the items by clicking on a column heading." msgstr "" #. (itstool) path: listitem/para #: C/index-in.docbook:2547 #, fuzzy #| msgid "" #| "As mentioned above, each TextView has a " #| "TextBuffer, and one or more TextViews can share the same TextBuffer." msgid "" "In any view, set a Sorter such as a " "StringSorter or a NumericSorter to the SortListModel." msgstr "" "Som nämns ovan har varje TextView en " "TextBuffer, och en eller flera TextView kan dela på samma TextBuffer." #. (itstool) path: section/para #: C/index-in.docbook:2552 #, fuzzy #| msgid "" #| "Reference" msgid "" "SortListModel Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:2553 #, fuzzy #| msgid "" #| "TreeSortable Reference" msgid "" "StringSorter Reference" msgstr "" "Referens för TreeSortable" #. (itstool) path: section/para #: C/index-in.docbook:2554 #, fuzzy #| msgid "" #| "TreeSortable Reference" msgid "" "NumericSorter Reference" msgstr "" "Referens för TreeSortable" #. (itstool) path: figure/title #: C/index-in.docbook:2560 msgid "SortListModel" msgstr "" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2562 #, fuzzy msgctxt "_" msgid "" "external ref='figures/listmodel_sort.png' " "md5='9f6ee5fc4c2f03172fefc8027d97063e'" msgstr "" "external ref='figures/treeview_list.png' " "md5='60e5e4ecb284d0cdc53373fe0ec858ee'" #. (itstool) path: section/para #: C/index-in.docbook:2566 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:2572 #, fuzzy #| msgid "Filtering Files" msgid "Filtering" msgstr "Filtrera filer" #. (itstool) path: section/para #: C/index-in.docbook:2574 #, fuzzy msgid "" "The list can be filtered by wrapping it in a FilterListModel. Set a Filter such as a " "StringFilter or a BoolFilter " "to the FilterListModel." msgstr "" "Gtk::Style och Gtk::Rc togs " "bort, ersatta av Gtk::StyleContext och olika " "Gtk::StyleProvider, som Gtk::CssProvider." #. (itstool) path: section/para #: C/index-in.docbook:2580 #, fuzzy #| msgid "" #| "Reference" msgid "" "FilterListModel Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:2581 #, fuzzy #| msgid "" #| "Widget Reference" msgid "" "StringFilter Reference" msgstr "" "Widget-referens" #. (itstool) path: section/para #: C/index-in.docbook:2582 #, fuzzy #| msgid "" #| "Tooltip Reference" msgid "" "BoolFilter Reference" msgstr "" "Tooltip-referens" #. (itstool) path: figure/title #: C/index-in.docbook:2588 msgid "FilterListModel" msgstr "" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2590 #, fuzzy msgctxt "_" msgid "" "external ref='figures/listmodel_filter.png' " "md5='b1407e88c99b90c2ad7698ce30a46a1e'" msgstr "" "external ref='figures/recentfiles.png' md5='2ca280c98b5c8822ad48ca40f7ce0bb4'" #. (itstool) path: section/para #: C/index-in.docbook:2594 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:2600 #, fuzzy #| msgid "Applying Tags" msgid "Displaying Trees" msgstr "Tillämpa taggar" #. (itstool) path: section/para #: C/index-in.docbook:2602 msgid "" "While the deprecated TreeView provided built-in " "support for trees, the list widgets, and in particular Gio::" "ListModel, do not. However, gtkmm " "provides functionality to make trees look and behave like lists for the " "people who still want to display lists. This is achieved by using the " "TreeListModel to flatten a tree into a list. The " "TreeExpander widget can then be used inside a " "listitem to allow users to expand and collapse rows." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:2612 #, fuzzy #| msgid "" #| "TreeModelSort Reference" msgid "" "TreeListModel Reference" msgstr "" "Referens för TreeModelSort" #. (itstool) path: section/para #: C/index-in.docbook:2613 #, fuzzy #| msgid "" #| "TreeModelSort Reference" msgid "" "TreeExpander Reference" msgstr "" "Referens för TreeModelSort" #. (itstool) path: figure/title #: C/index-in.docbook:2619 #, fuzzy msgid "TreeListModel" msgstr "Modellen" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2621 #, fuzzy msgctxt "_" msgid "" "external ref='figures/listmodel_tree.png' " "md5='656307ee78c8fd9ac379f2a0d01b8a81'" msgstr "" "external ref='figures/notebook.png' md5='b46c25388d4c250b0ab737f71f82d81b'" #. (itstool) path: section/para #: C/index-in.docbook:2625 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:2633 msgid "The TreeView widget" msgstr "TreeView-komponenten" #. (itstool) path: note/para #: C/index-in.docbook:2635 #, fuzzy #| msgid "" #| "Gdk::DragContext has been split into " #| "Gdk::Drag and Gdk::Drop." msgid "" "Gtk::TreeView is deprecated since gtkmm 4.10. In new code, use Gtk::ListView for " "lists and Gtk::ColumnView for tabular lists." msgstr "" "Gdk::DragContext har delats upp i Gdk::" "Drag och Gdk::Drop." #. (itstool) path: chapter/para #: C/index-in.docbook:2640 msgid "" "The Gtk::TreeView widget can contain lists or trees " "of data, in columns." msgstr "" "Komponenten Gtk::TreeView kan innehålla listor eller " "träd med data i kolumner." #. (itstool) path: section/title #: C/index-in.docbook:2646 #, fuzzy msgid "The Model" msgstr "Modellen" #. (itstool) path: section/para #: C/index-in.docbook:2648 #, fuzzy msgid "" "Each Gtk::TreeView has an associated Gtk::" "TreeModel, which contains the data displayed by the " "TreeView. Each Gtk::TreeModel " "can be used by more than one Gtk::TreeView. For " "instance, this allows the same underlying data to be displayed and edited in " "2 different ways at the same time. Or the 2 Views might display different " "columns from the same Model data, in the same way that 2 SQL queries (or " "\"views\") might show different fields from the same database table." msgstr "" "Varje Gtk::TreeView har en associerad Gtk::" "TreeModel som innehåller de data som visas av denna " "Gtk::TreeView. Varje Gtk::TreeModel kan användas av mer än en Gtk::TreeView. " "Exempelvis tillåter detta samma underliggande data att visas och redigeras " "på två olika sätt samtidigt. Eller så kan de två vyerna visa olika kolumner " "från samma modelldata, på samma sätt som två SQL-frågor (eller ”vyer”) kan " "visa olika fält från samma databastabell." #. (itstool) path: section/para #: C/index-in.docbook:2658 #, fuzzy msgid "" "Although you can theoretically implement your own Model, you will normally " "use either the ListStore or TreeStore model classes." msgstr "" "Även om du i teorin kan implementera en egen Model, så kommer du vanligen " "använda antingen modellklasserna ListStore eller " "TreeStore." #. (itstool) path: section/para #: C/index-in.docbook:2664 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:2667 msgid "ListStore, for rows" msgstr "ListStore, för rader" #. (itstool) path: section/para #: C/index-in.docbook:2669 msgid "" "The ListStore contains simple rows of data, and each " "row has no children." msgstr "" "ListStore innehåller enkla rader med data, och varje " "rad saknar underordnade." #. (itstool) path: figure/title #: C/index-in.docbook:2675 C/index-in.docbook:3256 msgid "TreeView - ListStore" msgstr "TreeView - ListStore" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2677 C/index-in.docbook:3258 #, fuzzy msgctxt "_" msgid "" "external ref='figures/treeview_list.png' " "md5='60e5e4ecb284d0cdc53373fe0ec858ee'" msgstr "" "external ref='figures/treeview_list.png' " "md5='60e5e4ecb284d0cdc53373fe0ec858ee'" #. (itstool) path: section/para #: C/index-in.docbook:2681 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:2686 msgid "TreeStore, for a hierarchy" msgstr "TreeStore, för en hierarki" #. (itstool) path: section/para #: C/index-in.docbook:2688 msgid "" "The TreeStore contains rows of data, and each row may " "have child rows." msgstr "" "TreeStore innehåller rader med data, och varje rad " "kan ha underordnade rader." #. (itstool) path: figure/title #: C/index-in.docbook:2694 C/index-in.docbook:3276 msgid "TreeView - TreeStore" msgstr "TreeView - TreeStore" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:2696 C/index-in.docbook:3278 #, fuzzy msgctxt "_" msgid "" "external ref='figures/treeview_tree.png' " "md5='2270025659b23ebfc0e38d8b629289ef'" msgstr "" "external ref='figures/treeview_tree.png' " "md5='2270025659b23ebfc0e38d8b629289ef'" #. (itstool) path: section/para #: C/index-in.docbook:2700 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:2705 msgid "Model Columns" msgstr "Modellkolumner" #. (itstool) path: section/para #: C/index-in.docbook:2707 #, fuzzy msgid "" "The TreeModelColumnRecord class is used to keep track " "of the columns and their data types. You add TreeModelColumn instances to the ColumnRecord and then use " "those TreeModelColumns when getting and setting the " "data in model rows. You will probably find it convenient to derive a new " "TreeModelColumnRecord which has your " "TreeModelColumn instances as member data." msgstr "" "TreeModelColumnRecord-klassen används för att hålla " "koll på kolumnerna och deras datatyper. Du lägger till " "TreeModelColumn-instanser till ditt " "ColumnRecord och använder sedan dessa " "TreeModelColumn-instanser när du hämtar och ställer " "in data i modellrader. Du kommer troligen finna det praktiskt att härleda en " "ny TreeModelColumnRecord som har dina " "TreeModelColumn-instanser som medlemsdata." #. (itstool) path: section/programlisting #: C/index-in.docbook:2718 #, no-wrap msgid "" "class ModelColumns : public Gtk::TreeModelColumnRecord\n" "{\n" "public:\n" "\n" " ModelColumns()\n" " { add(m_col_text); add(m_col_number); }\n" "\n" " Gtk::TreeModelColumn<Glib::ustring> m_col_text;\n" " Gtk::TreeModelColumn<int> m_col_number;\n" "};\n" "\n" "ModelColumns m_Columns;" msgstr "" "class ModelColumns : public Gtk::TreeModelColumnRecord\n" "{\n" "public:\n" "\n" " ModelColumns()\n" " { add(m_col_text); add(m_col_number); }\n" "\n" " Gtk::TreeModelColumn<Glib::ustring> m_col_text;\n" " Gtk::TreeModelColumn<int> m_col_number;\n" "};\n" "\n" "ModelColumns m_Columns;" #. (itstool) path: section/para #: C/index-in.docbook:2731 #, fuzzy msgid "" "You specify the ColumnRecord when creating the Model, " "like so:" msgstr "" "Du anger ColumnRecord när du skapar modellen, så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2735 #, no-wrap msgid "" "Glib::RefPtr<Gtk::ListStore> refListStore =\n" " Gtk::ListStore::create(m_Columns);" msgstr "" "Glib::RefPtr<Gtk::ListStore> refListStore =\n" " Gtk::ListStore::create(m_Columns);" #. (itstool) path: section/para #: C/index-in.docbook:2737 #, fuzzy msgid "" "As a TreeModelColumnRecord describes structure, not " "data, it can be shared among multiple models, and this is preferable for " "efficiency. However, the instance (such as m_Columns " "here) should usually not be static, because it often needs to be " "instantiated after glibmm has been initialized. " "The best solution is to make it a lazily instantiated singleton, so that it " "will be constructed on-demand, whenever the first model accesses it." msgstr "" "Då en TreeModelColumnRecord beskriver struktur, inte " "data, så kan den delas mellan flera modeller, och detta är önskvärt för " "effektivitet. Instansen (som m_Columns här) ska dock " "vanligen inte vara statisk, då den ofta behöver instansieras efter att " "glibmm har initierats. Den bästa lösningen är att " "göra den till en slött instansierad singleton, så att den kommer konstrueras " "när den behövs, närhelst den första modellen kommer åt den." #. (itstool) path: section/title #: C/index-in.docbook:2749 msgid "Adding Rows" msgstr "Lägga till rader" #. (itstool) path: section/para #: C/index-in.docbook:2751 msgid "" "Add rows to the model with the append(), " "prepend(), or insert() " "methods." msgstr "" "Lägg till rader till modellen med metoderna append(), prepend() eller insert()." #. (itstool) path: section/programlisting #: C/index-in.docbook:2755 #, no-wrap msgid "auto iter = m_refListStore->append();" msgstr "auto iter = m_refListStore->append();" #. (itstool) path: section/para #: C/index-in.docbook:2756 #, fuzzy msgid "You can dereference the iterator to get the Row:" msgstr "Du kan dereferera iteratorn för att få raden:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2758 #, no-wrap msgid "auto row = *iter;" msgstr "auto row = *iter;" #. (itstool) path: section/title #: C/index-in.docbook:2760 msgid "Adding child rows" msgstr "Lägga till underordnade rader" #. (itstool) path: section/para #: C/index-in.docbook:2761 msgid "" "Gtk::TreeStore models can have child items. Add them " "with the append(), prepend(), or insert() methods, like so:" msgstr "" "Gtk::TreeStore-modeller kan ha underordnade objekt. " "Lägg till dem med metoderna append(), " "prepend() eller insert(), " "så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2766 #, no-wrap msgid "" "auto iter_child =\n" " m_refTreeStore->append(row.children());" msgstr "" "auto iter_child =\n" " m_refTreeStore->append(row.children());" #. (itstool) path: section/title #: C/index-in.docbook:2773 msgid "Setting values" msgstr "Ställa in värden" #. (itstool) path: section/para #: C/index-in.docbook:2775 #, fuzzy msgid "" "You can use the operator[] overload to set the data " "for a particular column in the row, specifying the " "TreeModelColumn used to create the model." msgstr "" "Du kan använda överlagringen operator[] för att " "ställa in data för en specifik kolumn i raden, angivande den " "TreeModelColumn som används för att skapa modellen." #. (itstool) path: section/programlisting #: C/index-in.docbook:2780 #, no-wrap msgid "row[m_Columns.m_col_text] = \"sometext\";" msgstr "row[m_Columns.m_col_text] = \"litetext\";" #. (itstool) path: section/title #: C/index-in.docbook:2784 msgid "Getting values" msgstr "Hämta värden" #. (itstool) path: section/para #: C/index-in.docbook:2786 #, fuzzy msgid "" "You can use the operator[] overload to get the data " "in a particular column in a row, specifying the TreeModelColumn used to create the model." msgstr "" "Du kan använda överlagringen operator[] för att få " "data för en specifik kolumn i raden, angivande den " "TreeModelColumn som används för att skapa modellen." #. (itstool) path: section/programlisting #: C/index-in.docbook:2791 #, no-wrap msgid "" "auto strText = row[m_Columns.m_col_text];\n" "auto number = row[m_Columns.m_col_number];" msgstr "" "auto strText = row[m_Columns.m_col_text];\n" "auto number = row[m_Columns.m_col_number];" #. (itstool) path: section/para #: C/index-in.docbook:2793 msgid "" "The compiler will complain if you use an inappropriate type. For instance, " "this would generate a compiler error:" msgstr "" "Kompilatorn kommer klaga om du använder en olämplig typ. Exempelvis skulle " "detta generera ett kompileringsfel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2797 #, no-wrap msgid "" "//compiler error - no conversion from ustring to int.\n" "int number = row[m_Columns.m_col_text];" msgstr "" "//kompileringsfel - ingen konvertering från ustring till int.\n" "int number = row[m_Columns.m_col_text];" #. (itstool) path: section/title #: C/index-in.docbook:2802 msgid "\"Hidden\" Columns" msgstr "”Dolda” kolumner" #. (itstool) path: section/para #: C/index-in.docbook:2804 #, fuzzy msgid "" "You might want to associate extra data with each row. If so, just add it as " "a Model column, but don't add it to the View." msgstr "" "Du kan vilja associera extra data med varje rad. Lägg i så fall bara till " "dem som en modellkolumn, men lägg inte till dem till vyn." #. (itstool) path: section/para #: C/index-in.docbook:2815 #, fuzzy msgid "" "The View is the actual widget (Gtk::TreeView) that " "displays the model (Gtk::TreeModel) data and allows " "the user to interact with it. The View can show all of the model's columns, " "or just some, and it can show them in various ways." msgstr "" "Vyn är den faktiska komponenten (Gtk::TreeView) som " "visar data för modellen (Gtk::TreeModel) och låter " "användaren interagera med dem. Vyn kan visa alla modellens kolumner, eller " "bara några, och den kan visa dem på olika sätt." #. (itstool) path: section/para #: C/index-in.docbook:2822 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:2825 #, fuzzy msgid "Using a Model" msgstr "Använda en Model" #. (itstool) path: section/para #: C/index-in.docbook:2827 msgid "" "You can specify a Gtk::TreeModel when constructing " "the Gtk::TreeView, or you can use the " "set_model() method, like so:" msgstr "" "Du kan ange en Gtk::TreeModel när du skapar din " "Gtk::TreeView, eller så kan du använda metoden " "set_model(), så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2832 #, no-wrap msgid "m_TreeView.set_model(m_refListStore);" msgstr "m_TreeView.set_model(m_refListStore);" #. (itstool) path: section/title #: C/index-in.docbook:2836 #, fuzzy msgid "Adding View Columns" msgstr "Lägga till vykolumner" #. (itstool) path: section/para #: C/index-in.docbook:2838 #, fuzzy msgid "" "You can use the append_column() method to tell the " "View that it should display certain Model columns, in a certain order, with " "a certain column title." msgstr "" "Du kan använda metoden append_column() för att säga " "till vyn att den ska visa vissa modellkolumner i en viss ordning, med en " "viss kolumntitel." #. (itstool) path: section/programlisting #: C/index-in.docbook:2843 #, fuzzy, no-wrap msgid "m_TreeView.append_column(\"Messages\", m_Columns.m_col_text);" msgstr "m_TreeView.append_column(\"Meddelanden\", m_Columns.m_col_text);" #. (itstool) path: section/para #: C/index-in.docbook:2844 #, fuzzy msgid "" "When using this simple append_column() overload, " "the TreeView will display the model data with an " "appropriate CellRenderer. For instance, strings and " "numbers are shown in a simple Gtk::Entry widget, and " "booleans are shown in a Gtk::CheckButton. This is " "usually what you need. For other column types you must either connect a " "callback that converts your type into a string representation, with " "TreeViewColumn::set_cell_data_func(), or derive a " "custom CellRenderer. Note that (unsigned) short is " "not supported by default - You could use (unsigned) int or (unsigned) long " "as the column type instead." msgstr "" "När denna enkla append_column()-överlagring används " "kommer vår TreeView modelldata med en lämplig " "CellRenderer. Strängar och tal visas exempelvis i en " "enkel Gtk::Entry-komponent, och booleaner visas i en " "Gtk::CheckButton. Det här är vanligen vad du behöver. " "För andra kolumntyper måste du antingen ansluta ett återanrop som " "konverterar din typ till en strängrepresentation med " "TreeViewColumn::set_cell_data_func(), eller härleda " "en anpassad CellRenderer. Observera att (unsigned) " "short inte stöds som standard - Du skulle kunna använda (unsigned) int eller " "(unsigned) long som kolumntyp i stället." #. (itstool) path: section/title #: C/index-in.docbook:2860 msgid "More than one Model Column per View Column" msgstr "Mer än en modellkolumn per vykolumn" #. (itstool) path: section/para #: C/index-in.docbook:2862 #, fuzzy msgid "" "To render more than one model column in a view column, you need to create " "the TreeView::Column widget manually, and use " "pack_start() to add the model columns to it." msgstr "" "För att rendera mer än en modellkolumn i en vykolumn behöver du skapa " "TreeView::Column-komponenten manuellt, och använda " "pack_start() för att lägga till modellkolumnerna " "till den." #. (itstool) path: section/para #: C/index-in.docbook:2868 #, fuzzy msgid "" "Then use append_column() to add the view Column to " "the View. Notice that Gtk::TreeView::append_column() is overloaded to accept either a prebuilt Gtk::" "TreeView::Column widget, or just the TreeModelColumn from which it generates an appropriate Gtk::TreeView::" "Column widget." msgstr "" "Använd sedan append_column() för att lägga till " "vykolumnen till vyn. Observera att Gtk::TreeView::" "append_column() är överlagrad för att acceptera antingen en " "förbyggd Gtk::TreeView::Column-komponent, eller bara " "vår TreeModelColumn från vilken den genererar en " "lämplig Gtk::TreeView::Column-komponent." #. (itstool) path: section/para #: C/index-in.docbook:2875 msgid "" "Here is some example code, which has a pixbuf icon and a text name in the " "same column:" msgstr "" "Här är lite exempelkod som har en pixbuf-ikon och ett textnamn i samma " "kolumn:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2878 #, fuzzy, no-wrap msgid "" "\n" "auto pColumn = Gtk::make_managed<Gtk::TreeView::Column>(\"Icon Name\");\n" "\n" "// m_columns.icon and m_columns.iconname are columns in the model.\n" "// pColumn is the column in the TreeView:\n" "pColumn->pack_start(m_columns.icon, /* expand= */ false);\n" "pColumn->pack_start(m_columns.iconname);\n" "\n" "m_TreeView.append_column(*pColumn);" msgstr "" "\n" "auto pColumn = Gtk::make_managed<Gtk::TreeView::Column>(\"Ikonnamn\");\n" "\n" "// m_columns.icon och m_columns.iconname är kolumner i modellen.\n" "// pColumn är kolumnen i vår TreeView:\n" "pColumn->pack_start(m_columns.icon, /* expand= */ false);\n" "pColumn->pack_start(m_columns.iconname);\n" "\n" "m_TreeView.append_column(*pColumn);" #. (itstool) path: section/title #: C/index-in.docbook:2890 msgid "Specifying CellRenderer details" msgstr "Ange detaljer för CellRenderer" #. (itstool) path: section/para #: C/index-in.docbook:2892 #, fuzzy msgid "" "The default CellRenderers and their default behavior " "will normally suffice, but you might occasionally need finer control. For " "instance, this example code from gtkmm/demos/gtk-demo/" "example_treeview_treestore.cc, appends a Gtk::" "CellRenderer widget and instructs it to render the data from " "various model columns through various aspects of its appearance." msgstr "" "Vanliga CellRenderer med sitt standardbeteende räcker " "vanligen, men du kan ibland behöva finare kontroll. Denna exempelkod från " "gtkmm/demos/gtk-demo/example_treeview_treestore.cc " "lägger till exempel till en Gtk::CellRenderer-" "komponent och instruerar den att rendera data från diverse modellkolumner " "genom olika aspekter av dess utseende." #. (itstool) path: section/programlisting #: C/index-in.docbook:2900 #, fuzzy, no-wrap msgid "" "auto cols_count = m_TreeView.append_column_editable(\"Alex\", m_columns.alex);\n" "auto pColumn = m_TreeView.get_column(cols_count-1);\n" "if(pColumn)\n" "{\n" " auto pRenderer = static_cast<Gtk::CellRendererToggle*>(pColumn->get_first_cell());\n" " pColumn->add_attribute(pRenderer->property_visible(), m_columns.visible);\n" " pColumn->add_attribute(pRenderer->property_activatable(), m_columns.world);" msgstr "" "auto cols_count = m_TreeView.append_column_editable(\"Alex\", m_columns.alex);\n" "auto pColumn = m_TreeView.get_column(cols_count-1);\n" "if(pColumn)\n" "{\n" " auto pRenderer = static_cast<Gtk::CellRendererToggle*>(pColumn->get_first_cell());\n" " pColumn->add_attribute(pRenderer->property_visible(), m_columns.visible);\n" " pColumn->add_attribute(pRenderer->property_activatable(), m_columns.world);" #. (itstool) path: section/para #: C/index-in.docbook:2908 msgid "" "You can also connect to CellRenderer signals to " "detect user actions. For instance:" msgstr "" "Du kan också ansluta till CellRenderer-signaler för " "att upptäcka användaråtgärder. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2912 #, no-wrap msgid "" "\n" "auto pRenderer = Gtk::make_managed<Gtk::CellRendererToggle>();\n" "pRenderer->signal_toggled().connect(\n" " sigc::bind( sigc::mem_fun(*this,\n" " &Example_TreeView_TreeStore::on_cell_toggled), m_columns.dave)\n" ");" msgstr "" "\n" "auto pRenderer = Gtk::make_managed<Gtk::CellRendererToggle>();\n" "pRenderer->signal_toggled().connect(\n" " sigc::bind( sigc::mem_fun(*this,\n" " &Example_TreeView_TreeStore::on_cell_toggled), m_columns.dave)\n" ");" #. (itstool) path: section/title #: C/index-in.docbook:2921 C/index-in.docbook:3287 msgid "Editable Cells" msgstr "Redigerbara celler" #. (itstool) path: section/title #: C/index-in.docbook:2924 msgid "Automatically-stored editable cells." msgstr "Automatiskt lagrade redigerbara celler." #. (itstool) path: section/para #: C/index-in.docbook:2926 #, fuzzy msgid "" "Cells in a TreeView can be edited in-place by the " "user. To allow this, use the Gtk::TreeView " "insert_column_editable() and " "append_column_editable() methods instead of " "insert_column() and append_column(). When these cells are edited the new values will be stored " "immediately in the Model. Note that these methods are templates which can " "only be instantiated for simple column types such as Glib::" "ustring, int, and long." msgstr "" "Celler i en TreeView kan redigeras på plats av " "användaren. För att tillåta detta använder du i Gtk::TreeView metoderna insert_column_editable() och " "append_column_editable() i stället för " "insert_column() och append_column(). När dessa celler redigeras kommer de nya värdena lagras " "omedelbart i modellen. Observera att dessa metoder är mallar som bara kan " "instansieras för enkla kolumntyper som Glib::ustring, " "int, och long." #. (itstool) path: section/title #: C/index-in.docbook:2940 msgid "Implementing custom logic for editable cells." msgstr "Implementera anpassad logik för redigerbara celler." #. (itstool) path: section/para #: C/index-in.docbook:2942 msgid "" "However, you might not want the new values to be stored immediately. For " "instance, maybe you want to restrict the input to certain characters or " "ranges of values." msgstr "" "Du vill dock kanske inte att de nya värdena ska lagras omedelbart. Du vill " "exempelvis kanske begränsa inmatningen till vissa tecken eller " "teckenintervall." #. (itstool) path: section/para #: C/index-in.docbook:2947 #, fuzzy msgid "" "To achieve this, you should use the normal Gtk::TreeView insert_column() and " "append_column() methods, then use " "get_column_cell_renderer() to get the " "Gtk::CellRenderer used by that column." msgstr "" "För att åstadkomma detta bör du i Gtk::TreeView " "använda de normala metoderna insert_column() och " "append_column(), och sedan använda " "get_column_cell_renderer() för att får den " "Gtk::CellRenderer som används av den kolumnen." #. (itstool) path: section/para #: C/index-in.docbook:2953 #, fuzzy msgid "" "You should then cast that Gtk::CellRenderer* to the " "specific CellRenderer that you expect, so you can use " "specific API." msgstr "" "Du bör sedan typkonvertera den Gtk::CellRenderer* " "till den specifika CellRenderer som du förväntar dig, " "så du kan använda specifikt API." #. (itstool) path: section/para #: C/index-in.docbook:2957 msgid "" "For instance, for a CellRendererText, you would set the cell's " "editable property to true, like so:" msgstr "" "För en CellRendererText skulle du exempelvis ställa in cellens " "editable-egenskap till true, så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2960 #, no-wrap msgid "cell->property_editable() = true;" msgstr "cell->property_editable() = true;" #. (itstool) path: section/para #: C/index-in.docbook:2961 msgid "" "For a CellRendererToggle, you would set the activatable " "property instead." msgstr "" "För en CellRendererToggle skulle du i stället ställa in egenskapen " "activatable." #. (itstool) path: section/para #: C/index-in.docbook:2965 #, fuzzy msgid "" "You can then connect to the appropriate \"edited\" signal. For instance, " "connect to Gtk::CellRendererText::signal_edited(), " "or Gtk::CellRendererToggle::signal_toggled(). If " "the column contains more than one CellRenderer then " "you will need to use Gtk::TreeView::get_column() " "and then call get_cells() on that view Column." msgstr "" "Du kan sedan ansluta till den lämpliga ”edited”-signalen. Anslut exempelvis " "till Gtk::CellRendererText::signal_edited() eller " "Gtk::CellRendererToggle::signal_toggled(). Om " "kolumnen innehåller mer än en CellRenderer så kommer " "du behöva använda Gtk::TreeView::get_column() och " "sedan anropa get_cells() på den vykolumnen." #. (itstool) path: section/para #: C/index-in.docbook:2973 #, fuzzy msgid "" "In your signal handler, you should examine the new value and then store it " "in the Model if that is appropriate for your application." msgstr "" "I din signalhanterare bör du undersöka det nya värdet och sedan lagra det i " "modellen om det är lämpligt för ditt program." #. (itstool) path: section/title #: C/index-in.docbook:2982 #, fuzzy msgid "Iterating over Model Rows" msgstr "Iterera över modellrader" #. (itstool) path: section/para #: C/index-in.docbook:2984 #, fuzzy msgid "" "Gtk::TreeModel provides a C++ Standard Library-style " "container of its children, via the children() " "method. You can use the familiar begin() and " "end() methods iterator incrementing, like so:" msgstr "" "Gtk::TreeModel tillhandahåller en behållare av sina " "underordnade enligt stilen hos C++-standardbiblioteket, via metoden " "children(). Du kan använda iteratorökning med de " "bekanta metoderna begin() och end(), så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:2990 #, fuzzy, no-wrap msgid "" "\n" "auto children = refModel->children();\n" "for (auto iter = children.begin(), end = children.end(); iter != end; ++iter)\n" "{\n" " auto row = *iter;\n" " //Do something with the row - see above for set/get.\n" "}" msgstr "" "\n" "auto children = refModel->children();\n" "for (auto iter = children.begin(), end = children.end(); iter != end; ++iter)\n" "{\n" " auto row = *iter;\n" " //Gör något med raden - se ovan för set/get.\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:2997 #, fuzzy msgid "" "If you always want to iterate across the entire range, much more succinct " "syntax is possible using C++'s range-based for loop:" msgstr "" "Om du alltid vill iterera längs hela intervallet är mycket mer kortfattad " "syntax möjlig med C++:s intervallbaserade for-loop:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3001 #, fuzzy, no-wrap msgid "" "\n" "for (auto row: refModel->children())\n" "{\n" " //Do something with the row - see above for set/get.\n" "}" msgstr "" "\n" "for (auto row: refModel->children())\n" "{\n" " //Gör något med raden - se ovan för set/get.\n" "}" #. (itstool) path: section/title #: C/index-in.docbook:3008 #, fuzzy msgid "Row children" msgstr "Underordnade rader" #. (itstool) path: section/para #: C/index-in.docbook:3010 #, fuzzy msgid "" "When using a Gtk::TreeStore, the rows can have child " "rows, which can have their own children in turn. Use Gtk::" "TreeModel::Row::children() to get the container of child " "Rows:" msgstr "" "Vid användning av Gtk::TreeStore kan raderna ha " "underordnade rader, vilka i sin tur kan ha egna underordnade. Använd " "Gtk::TreeModel::Row::children() för att få " "behållaren för underordnade Row-rader:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3015 #, no-wrap msgid "Gtk::TreeModel::Children children = row.children();" msgstr "Gtk::TreeModel::Children children = row.children();" #. (itstool) path: section/title #: C/index-in.docbook:3021 #, fuzzy msgid "The Selection" msgstr "Selection" #. (itstool) path: section/para #: C/index-in.docbook:3023 #, fuzzy msgid "" "To find out what rows the user has selected, get the Gtk::" "TreeView::Selection object from the TreeView, like so:" msgstr "" "För att få reda på vilka rader användaren har markerat tar du objektet " "Gtk::TreeView::Selection från vår " "TreeView, så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3028 #, no-wrap msgid "auto refTreeSelection = m_TreeView.get_selection();" msgstr "auto refTreeSelection = m_TreeView.get_selection();" #. (itstool) path: section/title #: C/index-in.docbook:3031 #, fuzzy msgid "Single or multiple selection" msgstr "Enkel- eller flermarkering" #. (itstool) path: section/para #: C/index-in.docbook:3033 #, fuzzy msgid "" "By default, only single rows can be selected, but you can allow multiple " "selection by setting the mode, like so:" msgstr "" "Som standard kan endast enskilda rader markeras, men du kan tillåta " "markering av flera genom att ställa in det läget så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3037 #, no-wrap msgid "refTreeSelection->set_mode(Gtk::SelectionMode::MULTIPLE);" msgstr "refTreeSelection->set_mode(Gtk::SelectionMode::MULTIPLE);" #. (itstool) path: section/title #: C/index-in.docbook:3041 #, fuzzy msgid "The selected rows" msgstr "De markerade raderna" #. (itstool) path: section/para #: C/index-in.docbook:3043 #, fuzzy msgid "" "For single-selection, you can just call get_selected(), like so:" msgstr "" "För enkelmarkering kan du helt enkelt anropa get_selected(), så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3047 #, fuzzy, no-wrap msgid "" "auto iter = refTreeSelection->get_selected();\n" "if(iter) //If anything is selected\n" "{\n" " auto row = *iter;\n" " //Do something with the row.\n" "}" msgstr "" "auto iter = refTreeSelection->get_selected();\n" "if(iter) //Om något är markerat\n" "{\n" " auto row = *iter;\n" " //Gör något med raden.\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:3054 #, fuzzy msgid "" "For multiple-selection, you need to call get_selected_rows() or define a callback, and give it to " "selected_foreach(), " "selected_foreach_path(), or " "selected_foreach_iter(), like so:" msgstr "" "För flermarkering behöver du anropa get_selected_rows() eller definiera ett återanrop och ge det till " "selected_foreach(), " "selected_foreach_path() eller " "selected_foreach_iter(), så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3061 #, no-wrap msgid "" "refTreeSelection->selected_foreach_iter(\n" " sigc::mem_fun(*this, &TheClass::selected_row_callback) );\n" "\n" "void TheClass::selected_row_callback(\n" " const Gtk::TreeModel::const_iterator& iter)\n" "{\n" " auto row = *iter;\n" " //Do something with the row.\n" "}" msgstr "" "refTreeSelection->selected_foreach_iter(\n" " sigc::mem_fun(*this, &TheClass::selected_row_callback) );\n" "\n" "void TheClass::selected_row_callback(\n" " const Gtk::TreeModel::const_iterator& iter)\n" "{\n" " auto row = *iter;\n" " //Gör något med raden.\n" "}" #. (itstool) path: section/title #: C/index-in.docbook:3074 msgid "The \"changed\" signal" msgstr "Signalen ”changed”" #. (itstool) path: section/para #: C/index-in.docbook:3076 msgid "" "To respond to the user clicking on a row or range of rows, connect to the " "signal like so:" msgstr "" "För att svara på att användaren klickar på en rad eller ett radintervall " "ansluter du till signalen så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3080 #, no-wrap msgid "" "refTreeSelection->signal_changed().connect(\n" " sigc::mem_fun(*this, &Example_IconTheme::on_selection_changed)\n" ");" msgstr "" "refTreeSelection->signal_changed().connect(\n" " sigc::mem_fun(*this, &Example_IconTheme::on_selection_changed)\n" ");" #. (itstool) path: section/title #: C/index-in.docbook:3086 #, fuzzy msgid "Preventing row selection" msgstr "Förhindra radmarkering" #. (itstool) path: section/para #: C/index-in.docbook:3088 #, fuzzy msgid "" "Maybe the user should not be able to select every item in your list or tree. " "For instance, in the gtk-demo, you can select a demo to see the source code, " "but it doesn't make any sense to select a demo category." msgstr "" "Kanske användaren inte ska kunna markera alla objekt i din lista eller ditt " "träd. Exempelvis kan du i gtk-demo välja en demonstration för att se " "källkoden, men det är nonsens att markera en demonstrationskategori." #. (itstool) path: section/para #: C/index-in.docbook:3093 #, fuzzy msgid "" "To control which rows can be selected, use the " "set_select_function() method, providing a " "sigc::slot callback. For instance:" msgstr "" "För att styra vilka rader som kan markeras använder du metoden " "set_select_function(), som tillhandahåller ett " "sigc::slot-återanrop. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3098 #, no-wrap msgid "" "m_refTreeSelection->set_select_function( sigc::mem_fun(*this,\n" " &DemoWindow::select_function) );" msgstr "" "m_refTreeSelection->set_select_function( sigc::mem_fun(*this,\n" " &DemoWindow::select_function) );" #. (itstool) path: section/para #: C/index-in.docbook:3100 msgid "and then" msgstr "och sedan" #. (itstool) path: section/programlisting #: C/index-in.docbook:3103 #, fuzzy, no-wrap msgid "" "bool DemoWindow::select_function(\n" " const Glib::RefPtr<Gtk::TreeModel>& model,\n" " const Gtk::TreeModel::Path& path, bool)\n" "{\n" " const auto iter = model->get_iter(path);\n" " return iter->children().empty(); // only allow leaf nodes to be selected\n" "}" msgstr "" "bool DemoWindow::select_function(\n" " const Glib::RefPtr<Gtk::TreeModel>& model,\n" " const Gtk::TreeModel::Path& path, bool)\n" "{\n" " const auto iter = model->get_iter(path);\n" " return iter->children().empty(); // tillåt endast lövnoder att markeras\n" "}" #. (itstool) path: section/title #: C/index-in.docbook:3113 #, fuzzy msgid "Changing the selection" msgstr "Ändra markeringen" #. (itstool) path: section/para #: C/index-in.docbook:3115 #, fuzzy msgid "" "To change the selection, specify a Gtk::TreeModel::iterator or Gtk::TreeModel::Row, like so:" msgstr "" "För att ändra markeringen, ange en Gtk::TreeModel::iterator eller Gtk::TreeModel::Row, så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3120 #, no-wrap msgid "" "auto row = m_refModel->children()[5]; //The sixth row.\n" "if(row)\n" " refTreeSelection->select(row.get_iter());" msgstr "" "auto row = m_refModel->children()[5]; //Den sjätte raden.\n" "if(row)\n" " refTreeSelection->select(row.get_iter());" #. (itstool) path: section/para #: C/index-in.docbook:3123 msgid "or" msgstr "eller" #. (itstool) path: section/programlisting #: C/index-in.docbook:3126 #, no-wrap msgid "" "auto iter = m_refModel->children().begin()\n" "if(iter)\n" " refTreeSelection->select(iter);" msgstr "" "auto iter = m_refModel->children().begin()\n" "if(iter)\n" " refTreeSelection->select(iter);" #. (itstool) path: section/para #: C/index-in.docbook:3135 msgid "" "The standard tree models (TreeStore and " "ListStore) derive from TreeSortable, so they offer sorting functionality. For instance, call " "set_sort_column(), to sort the model by the " "specified column. Or supply a callback function to " "set_sort_func() to implement a more complicated " "sorting algorithm." msgstr "" "Standardträdmodellerna (TreeStore och " "ListStore) härleds från TreeSortable, så de erbjuder funktionalitet för sortering. Anropa exempelvis " "set_sort_column() för att sortera modellen efter " "angiven kolumn. Eller tillhandahåll en återanropsfunktion till " "set_sort_func() för att implementera en mer " "komplicerad sorteringsalgoritm." #. (itstool) path: section/para #: C/index-in.docbook:3139 msgid "" "TreeSortable Reference" msgstr "" "Referens för TreeSortable" #. (itstool) path: section/title #: C/index-in.docbook:3142 msgid "Sorting by clicking on columns" msgstr "Sortering genom att klicka på kolumner" #. (itstool) path: section/para #: C/index-in.docbook:3144 #, fuzzy msgid "" "So that a user can click on a TreeView's column " "header to sort the TreeView's contents, call " "Gtk::TreeView::Column::set_sort_column(), supplying " "the model column on which model should be sorted when the header is clicked. " "For instance:" msgstr "" "För att en användare ska kunna klicka på kolumnrubriken för en " "TreeView för att sortera innehållet i denna " "TreeView så anropar du Gtk::TreeView::" "Column::set_sort_column(), och tillhandahåller modellkolumnen " "för vilken modell som ska sorteras när rubriken klickas på. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3147 #, no-wrap msgid "" "auto pColumn = treeview.get_column(0);\n" "if(pColumn)\n" " pColumn->set_sort_column(m_columns.m_col_id);" msgstr "" "auto pColumn = treeview.get_column(0);\n" "if(pColumn)\n" " pColumn->set_sort_column(m_columns.m_col_id);" #. (itstool) path: section/title #: C/index-in.docbook:3153 #, fuzzy msgid "Independently sorted views of the same model" msgstr "Oberoende sorterade vyer av samma modell" #. (itstool) path: section/para #: C/index-in.docbook:3155 #, fuzzy msgid "" "The TreeView already allows you to show the same " "TreeModel in two TreeView " "widgets. If you need one of these TreeViews to sort the model differently " "than the other then you should use a TreeModelSort " "instead of just, for instance, Gtk::TreeViewColumn::" "set_sort_column(). TreeModelSort is a " "model that contains another model, presenting a sorted version of that " "model. For instance, you might add a sorted version of a model to a " "TreeView like so:" msgstr "" "TreeView låter dig redan visa samma " "TreeModel i två TreeView-" "komponenter. Om du behöver att en av dessa TreeView ska sortera modellen på " "ett annat sätt än den andra så bör du använda en TreeModelSort i stället för att exempelvis bara använda, Gtk::" "TreeViewColumn::set_sort_column(). TreeModelSort är en modell som innehåller en annan modell, och presenterar en " "sorterad version av den modellen. Du lägger exempelvis kanske till en " "sorterad version av en modell till en TreeView så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3163 #, fuzzy, no-wrap msgid "" "auto sorted_model = Gtk::TreeModelSort::create(model);\n" "sorted_model->set_sort_column(columns.m_col_name, Gtk::SortType::ASCENDING);\n" "treeview.set_model(sorted_model);" msgstr "" "auto sorted_model = Gtk::TreeModelSort::create(model);\n" "sorted_model->set_sort_column(columns.m_col_name, Gtk::SortType::ASCENDING);\n" "treeview.set_model(sorted_model);" #. (itstool) path: section/para #: C/index-in.docbook:3167 #, fuzzy msgid "" "Note, however, that the TreeView will provide iterators to the sorted model. " "You must convert them to iterators to the underlying child model in order to " "perform actions on that model. For instance:" msgstr "" "Observera docka att vår TreeView kommer tillhandahålla iteratorer till den " "sorterade modellen. Du måste konvertera dem till iteratorer till den " "underliggande underordnade modellen för att utföra åtgärder på den modellen. " "Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3169 #, no-wrap msgid "" "void ExampleWindow::on_button_delete()\n" "{\n" " auto refTreeSelection = m_treeview.get_selection();\n" " if(refTreeSelection)\n" " {\n" " auto sorted_iter = m_refTreeSelection->get_selected();\n" " if(sorted_iter)\n" " {\n" " auto iter = m_refModelSort->convert_iter_to_child_iter(sorted_iter);\n" " m_refModel->erase(iter);\n" " }\n" " }\n" "}" msgstr "" "void ExampleWindow::on_button_delete()\n" "{\n" " auto refTreeSelection = m_treeview.get_selection();\n" " if(refTreeSelection)\n" " {\n" " auto sorted_iter = m_refTreeSelection->get_selected();\n" " if(sorted_iter)\n" " {\n" " auto iter = m_refModelSort->convert_iter_to_child_iter(sorted_iter);\n" " m_refModel->erase(iter);\n" " }\n" " }\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:3183 msgid "" "TreeModelSort Reference" msgstr "" "Referens för TreeModelSort" #. (itstool) path: section/title #. (itstool) path: chapter/title #. (itstool) path: figure/title #: C/index-in.docbook:3189 C/index-in.docbook:3307 C/index-in.docbook:5283 #: C/index-in.docbook:5441 msgid "Drag and Drop" msgstr "Dra och släpp" #. (itstool) path: section/para #: C/index-in.docbook:3191 #, fuzzy msgid "" "Gtk::TreeView already implements simple drag-and-drop " "when used with the Gtk::ListStore or Gtk::" "TreeStore models (since gtk 4.8). If necessary, it also allows " "you to implement more complex behavior when items are dragged and dropped, " "using the normal Drag and Drop " "API." msgstr "" "Gtk::TreeView implementerar redan enkelt dra-och-" "släpp när den används med Gtk::ListStore- eller " "Gtk::TreeStore-modellerna. Om nödvändigt låter den " "dig också implementera mer komplext beteende när objekt dras och släpps, med " "det vanliga Dra och släpp-API:t." #. (itstool) path: section/title #: C/index-in.docbook:3200 #, fuzzy msgid "Reorderable rows" msgstr "Rader vars ordning går ändra" #. (itstool) path: section/para #: C/index-in.docbook:3202 #, fuzzy msgid "" "If you call Gtk::TreeView::set_reorderable() then " "your TreeView's items can be moved within the treeview itself. This is " "demonstrated in the TreeStore example." msgstr "" "Om du anropar Gtk::TreeView::set_reorderable() så " "kan objekten i din TreeView flyttas i själva trädvyn. Detta demonstreras i " "TreeStore-exemplet." #. (itstool) path: section/para #: C/index-in.docbook:3207 #, fuzzy msgid "" "However, this does not allow you any control of which items can be dragged, " "and where they can be dropped. If you need that extra control then you might " "create a derived Gtk::TreeModel from Gtk::" "TreeStore or Gtk::ListStore and override the " "Gtk::TreeDragSource::row_draggable_vfunc() and " "Gtk::TreeDragDest::row_drop_possible_vfunc() virtual " "methods. You can examine the Gtk::TreeModel::Paths " "provided and allow or disallow dragging or dropping by returning " "true or false." msgstr "" "Detta låter dig dock inte styra vilka objekt som kan dras, och var de kan " "släppas. Om du behöver den extra kontrollen så kan du skapa en härledd " "Gtk::TreeModel från Gtk::TreeStore " "eller Gtk::ListStore åsidosätta de virtuella metoderna " "Gtk::TreeDragSource::row_draggable_vfunc() och " "Gtk::TreeDragDest::row_drop_possible_vfunc(). Du kan " "undersöka de Gtk::TreeModel::Path som tillhandahålls och " "tillåta eller förbjuda dragning eller släppning genom att returnera " "true eller false." #. (itstool) path: section/para #: C/index-in.docbook:3214 #, fuzzy msgid "This is demonstrated in the drag_and_drop example." msgstr "Detta demonstreras i dra-och-släpp-exemplet." #. (itstool) path: section/title #: C/index-in.docbook:3220 C/index-in.docbook:3330 msgid "Popup Context Menu" msgstr "Poppuppsnabbvalsmeny" #. (itstool) path: section/para #: C/index-in.docbook:3222 #, fuzzy msgid "" "Lots of people need to implement right-click context menus for " "TreeViews so we will explain how to do that here to " "save you some time. It's much the same as a normal context menu, as " "described in the menus chapter. You " "use a Gtk::GestureClick to detect the mouse click." msgstr "" "Det finns många som behöver implementera snabbvalsmenyer åtkomliga med " "högerklick för TreeView-vyer, så vi kommer förklara " "hur det görs för att spara tid åt dig. Det är i stort sett samma som en " "vanlig snabbvalsmeny, som beskrivet i kapitlet menyer. Du använder ett Gtk::" "GestureClick för att upptäcka musklicket." #. (itstool) path: section/para #: C/index-in.docbook:3229 #, fuzzy msgid "" "This is demonstrated in the Popup Context Menu example. In that example a " "derived TreeView is used, but that's not necessary." msgstr "" "Detta demonstreras i exemplet poppuppsnabbvalsmeny. I det exemplet används " "en härledd TreeView, men det är inte nödvändigt." #. (itstool) path: section/title #: C/index-in.docbook:3236 C/index-in.docbook:3937 C/index-in.docbook:4235 #: C/index-in.docbook:5557 C/index-in.docbook:5956 msgid "Examples" msgstr "Exempel" #. (itstool) path: section/para #: C/index-in.docbook:3238 msgid "" "Some TreeView examples are shown here. There are more " "examples in the treeview directory in gtkmm-documentation's examples." msgstr "" "Några TreeView-exempel visas här. Det finns mer " "exempel i treeview-katalogen i gtkmm-documentations exempel." #. (itstool) path: section/para #: C/index-in.docbook:3242 msgid "" "If neither ListStore nor TreeStore is suitable for your application, look at the custom TreeModel example. " "It shows how you can make your own implementation of the " "TreeModel interface." msgstr "" "Om varken ListStore eller TreeStore är lämplig för ditt program kan du titta på exemplet anpassad TreeModel. Det " "visar dig hur du kan göra din egen implementation av TreeModel-gränssnittet." #. (itstool) path: section/title #: C/index-in.docbook:3249 msgid "ListStore" msgstr "ListStore" #. (itstool) path: section/para #: C/index-in.docbook:3250 msgid "" "This example has a Gtk::TreeView widget, with a " "Gtk::ListStore model." msgstr "" "Detta exempel har en Gtk::TreeView-komponent med en " "Gtk::ListStore-modell." #. (itstool) path: section/para #: C/index-in.docbook:3262 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:3267 msgid "TreeStore" msgstr "TreeStore" #. (itstool) path: section/para #: C/index-in.docbook:3269 msgid "" "This example is very similar to the ListStore " "example, but uses a Gtk::TreeStore model instead, and " "adds children to the rows." msgstr "" "Detta exempel är väldigt likt ListStore-exemplet, men " "använder en Gtk::TreeStore-modell i stället, och " "lägger till underordnade till raderna." #. (itstool) path: section/para #: C/index-in.docbook:3282 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:3289 msgid "" "This example is identical to the ListStore example, " "but it uses TreeView::append_column_editable() " "instead of TreeView::append_column()." msgstr "" "Detta exempel är identiskt med ListStore-exemplet, " "men använder TreeView::append_column_editable() i " "stället för TreeView::append_column()." #. (itstool) path: figure/title #: C/index-in.docbook:3296 msgid "TreeView - Editable Cells" msgstr "TreeView - Redigerbara celler" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3298 #, fuzzy msgctxt "_" msgid "" "external ref='figures/treeview_editablecells.png' " "md5='b4c81c776d192afdc3685fd4a8ef178c'" msgstr "" "external ref='figures/treeview_editablecells.png' " "md5='b4c81c776d192afdc3685fd4a8ef178c'" #. (itstool) path: section/para #: C/index-in.docbook:3302 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:3309 #, fuzzy msgid "" "This example is much like the TreeStore example, but " "has 2 extra columns to indicate whether the row can be dragged, and whether " "it can receive drag-and-dropped rows. It uses a derived Gtk::" "TreeStore which overrides the virtual functions as described in " "the TreeView Drag and Drop " "section." msgstr "" "Detta exempel liknar mycket TreeStore-exemplet, men " "har två extra kolumner som indikerar huruvida raden kan dras, och huruvida " "den kan ta emot dra-och-släppta rader. Det använder en härledd " "Gtk::TreeStore som åsidosätter de virtuella " "funktionerna som beskrivet i avsnittet TreeView - Dra och släpp." #. (itstool) path: figure/title #: C/index-in.docbook:3319 msgid "TreeView - Drag And Drop" msgstr "TreeView - Dra och släpp" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3321 #, fuzzy msgctxt "_" msgid "" "external ref='figures/treeview_draganddrop.png' " "md5='fb5de06eb865e9bd312f0b020e8f631d'" msgstr "" "external ref='figures/treeview_draganddrop.png' " "md5='fb5de06eb865e9bd312f0b020e8f631d'" #. (itstool) path: section/para #: C/index-in.docbook:3325 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:3332 #, fuzzy msgid "" "This example is much like the ListStore example, but " "derives a custom TreeView to encapsulate the tree " "model code and popup menu code in our derived class. See the TreeView Popup Context Menu " "section." msgstr "" "Detta exempel liknar mycket ListStore-exemplet, men " "härleder en anpassad TreeView för att kapsla in " "trädmodellskoden och poppuppmenykoden i vår härledda klass. Se avsnittet " "TreeView - Poppuppsnabbvalsmeny." #. (itstool) path: figure/title #: C/index-in.docbook:3340 msgid "TreeView - Popup Context Menu" msgstr "TreeView - Poppuppsnabbvalsmeny" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3342 #, fuzzy msgctxt "_" msgid "" "external ref='figures/treeview_popup.png' " "md5='29c7b04f9f865c6ae8214cbb1724b05f'" msgstr "" "external ref='figures/treeview_popup.png' " "md5='29c7b04f9f865c6ae8214cbb1724b05f'" #. (itstool) path: section/para #: C/index-in.docbook:3346 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:3353 #, fuzzy #| msgid "The DrawingArea Widget" msgid "The DropDown Widget" msgstr "DrawingArea-komponenten" #. (itstool) path: chapter/para #: C/index-in.docbook:3355 msgid "" "The DropDown widget is an alternative to the " "deprecated ComboBox. It uses list models instead of " "tree models, and the content is displayed using widgets instead of cell " "renderers." msgstr "" #. (itstool) path: chapter/para #: C/index-in.docbook:3360 #, fuzzy #| msgid "" #| "The ComboBox widget offers a list (or tree) of " #| "choices in a dropdown menu. If appropriate, it can show extra information " #| "about each item, such as text, a picture, a check button, or a progress " #| "bar. The ComboBox widget usually restricts the " #| "user to the available choices, but it can optionally have an " #| "Entry, allowing the user to enter arbitrary text " #| "if none of the available choices are suitable." msgid "" "The DropDown widget offers a list of choices in a " "dropdown menu. If appropriate, it can show extra information about each " "item, such as text, a picture, or a check button. The DropDown widget can optionally have an Entry in the " "dropdown menu, allowing the user to search in a long list." msgstr "" "ComboBox-komponenten erbjuder en lista (eller ett " "träd) av val i en rullgardinsmeny. Om lämpligt kan den visa extra " "information om varje objekt, som text, en bild, en kryssruta eller en " "förloppsindikator. ComboBox-komponenten begränsar " "vanligen användaren till de tillgängliga valen, men den kan valfritt ha ett " "Entry, som låter användaren mata in godtycklig text " "om inget av de tillgängliga valen passar." #. (itstool) path: chapter/para #: C/index-in.docbook:3367 #, fuzzy msgid "" "The list is provided via a Gio::ListModel, and data " "from this model is added to the DropDown's view with " "signal handlers connected to a SignalListItemFactory. " "This provides flexibility, but the StringList class " "provides a simpler text-based specialization in case that flexibility is not " "required." msgstr "" "Listan tillhandahålls via en TreeModel, och kolumner " "från denna modell läggs till vyn för ComboBox-komponenten med metoden " "ComboBox::pack_start(). Detta tillhandahåller " "flexibilitet och typsäkerhet under kompilering, men ComboBoxText-klassen tillhandahåller en enklare textbaserad specialisering om " "den flexibiliteten inte behövs." #. (itstool) path: chapter/para #: C/index-in.docbook:3374 #, fuzzy #| msgid "" #| "Reference" msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:3377 C/index-in.docbook:3552 #, fuzzy msgid "The model" msgstr "Modellen" #. (itstool) path: section/para #: C/index-in.docbook:3379 #, fuzzy #| msgid "" #| "The model for a ComboBox can be defined and filled exactly as for a " #| "TreeView. For instance, you might derive a " #| "ComboBox class with one integer and one text column, like so:" msgid "" "The model for a DropDown can be defined and filled " "exactly as for a ListView or a ColumnView. It must be a subclass of Glib::Object. " "For instance, you might have a DropDown with one " "integer and one text column, like so:" msgstr "" "Modellen för en ComboBox kan definieras och fyllas i exakt som för en " "TreeView. Exempelvis kan du härleda en ComboBox med " "ett heltal och en textkolumn, så här:" #. (itstool) path: section/para #: C/index-in.docbook:3407 msgid "" "After appending rows to this model, you should provide the model to the " "DropDown with the set_model() method. Unless you use the StringList " "model, you also need to set a ListItemFactory with " "set_factory(). If you want the items in the " "dropdown menu to look different from the item in the DropDown widget, you also need to set a separate " "ListItemFactory with set_list_factory()." msgstr "" #. (itstool) path: section/title #: C/index-in.docbook:3418 #, fuzzy msgid "The selected item" msgstr "De markerade raderna" #. (itstool) path: section/para #: C/index-in.docbook:3420 #, fuzzy msgid "" "To discover what item, if any, the user has selected from the " "DropDown, call DropDown::get_selected(). This returns an unsigned int that you can use to " "get the selected data from the model. For instance, you might read an " "integer ID value from the model, even though you have chosen only to show " "the human-readable description in the DropDown. For " "instance:" msgstr "" "För att upptäcka vilket objekt, om något, som användaren har valt från en " "ComboBox, anropa ComboBox::get_active(). " "DettaTreeModel::iterator returnerar en som du kan " "dereferera till en Row för att läsa värdena i dina " "kolumner. Exempelvis kanske du läser ett heltals-ID-värde från modellen, " "även om du valt att bara visa den mänskligt läsbara beskrivningen i vår " "ComboBox. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3427 #, fuzzy, no-wrap msgid "" "unsigned int sel = m_DropDown.get_selected();\n" "if (sel != GTK_INVALID_LIST_POSITION)\n" "{\n" " // Get the data for the selected row, using our knowledge of the list model:\n" " auto id = m_ListStore->get_item(sel).m_col_id;\n" " set_some_id_chosen(id); // Your own function.\n" "}\n" "else\n" " set_nothing_chosen(); // Your own function.\n" msgstr "" "Gtk::TreeModel::iterator iter = m_Combo.get_active();\n" "if(iter)\n" "{\n" " auto row = *iter;\n" "\n" " //Få data för markerad rad, med vår kunskap\n" " //om trädmodellen:\n" " auto id = row[m_Columns.m_col_id];\n" " set_something_id_chosen(id); //Din egen funktion.\n" "}\n" "else\n" " set_nothing_chosen(); //Din egen funktion." #. (itstool) path: section/title #: C/index-in.docbook:3440 C/index-in.docbook:3591 C/index-in.docbook:3652 msgid "Responding to changes" msgstr "Svara på ändringar" #. (itstool) path: section/para #: C/index-in.docbook:3442 #, fuzzy msgid "" "You might need to react to every change of selection in the " "DropDown, for instance to update other widgets. To do " "so, you should connect to property_selected().signal_changed(). For instance:" msgstr "" "Du behöver reagera på varje ändring av val i vår ComboBox, till exempel för " "att uppdatera andra komponenter. För att göra så bör du hantera signalen " "changed. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3446 #, fuzzy, no-wrap #| msgid "" #| "m_combo.signal_changed().connect( sigc::mem_fun(*this,\n" #| " &ExampleWindow::on_combo_changed) );" msgid "" "m_DropDown.property_selected().signal_changed().connect(\n" " sigc::mem_fun(*this, &ExampleWindow::on_dropdown_changed));\n" msgstr "" "m_combo.signal_changed().connect( sigc::mem_fun(*this,\n" " &ExampleWindow::on_combo_changed) );" #. (itstool) path: section/title #: C/index-in.docbook:3452 #, fuzzy msgid "Simple String Example" msgstr "Enkelt inmatningsexempel" #. (itstool) path: figure/title #: C/index-in.docbook:3455 msgid "Simple DropDown" msgstr "" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3457 #, fuzzy msgctxt "_" msgid "" "external ref='figures/dropdown_string.png' " "md5='b1689605c645e1ada3040f6df3335c56'" msgstr "" "external ref='figures/printing.png' md5='d4565328475ec89edf5f2230cb3fc5d0'" #. (itstool) path: section/para #: C/index-in.docbook:3461 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:3465 msgid "Examples with a Search Entry" msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:3467 #, fuzzy #| msgid "" #| "Gtk::Grid arranges its child widgets in rows and " #| "columns. Use attach() and " #| "attach_next_to() to insert child widgets." msgid "" "The dropdown menu may contain an Entry that allows to " "search for items in the list. Call set_enable_search() and set_expression(). For instance:" msgstr "" "Gtk::Grid arrangerar sina underordnade komponenter i " "rader och kolumner. Använd attach() och " "attach_next_to() för att infoga underordnade " "komponenter." #. (itstool) path: section/programlisting #: C/index-in.docbook:3471 #, no-wrap msgid "" "m_DropDown.set_enable_search(true);\n" "auto expression = Gtk::ClosureExpression<Glib::ustring>::create(\n" " sigc::mem_fun(*this, &ExampleWindow::get_col_name));\n" "m_DropDown.set_expression(expression);\n" "\n" "//-------\n" "Glib::ustring ExampleWindow::get_col_name(const Glib::RefPtr<Glib::ObjectBase>& item)\n" "{\n" " const auto col = std::dynamic_pointer_cast<ModelColumns>(item);\n" " return col ? col->m_col_name : \"\";\n" "}\n" msgstr "" #. (itstool) path: section/title #: C/index-in.docbook:3485 #, fuzzy #| msgid "Simple Example" msgid "String Example" msgstr "Enkelt exempel" #. (itstool) path: figure/title #: C/index-in.docbook:3488 msgid "Search String" msgstr "" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3490 #, fuzzy #| msgctxt "_" #| msgid "" #| "external ref='figures/drawingarea_arcs.png' " #| "md5='d94b40e33b9fab7ea9e2c870b97fcf0c'" msgctxt "_" msgid "" "external ref='figures/dropdown_search_string.png' " "md5='e130e644e7cfb13a5b90ab1372b17503'" msgstr "" "external ref='figures/drawingarea_arcs.png' " "md5='d94b40e33b9fab7ea9e2c870b97fcf0c'" #. (itstool) path: section/para #: C/index-in.docbook:3494 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:3498 #, fuzzy #| msgid "Full Example" msgid "Font Example" msgstr "Fullständigt exempel" #. (itstool) path: section/para #: C/index-in.docbook:3500 #, fuzzy #| msgid "" #| "Gtk::Button, Gtk::ToolButton, Gtk::MenuItem and Gtk::" #| "Switch implement the Gtk::Actionable " #| "interface instead of the removed Gtk::Activatable " #| "interface." msgid "" "This example uses a Pango::FontMap as its model. This " "is possible because Pango::FontMap implements the " "Gio::ListModel interface. Of course you can use a " "FontDialogButton instead." msgstr "" "Gtk::Button, Gtk::ToolButton, " "Gtk::MenuItem och Gtk::Switch " "implementerar Gtk::Actionable-gränssnittet i stället " "för det borttagna Gtk::Activatable-gränssnittet." #. (itstool) path: figure/title #: C/index-in.docbook:3507 C/index-in.docbook:3526 msgid "Search Font" msgstr "" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3509 #, fuzzy msgctxt "_" msgid "" "external ref='figures/dropdown_search_font.png' " "md5='1733e29c88c19dc6c4cbd1114446ac18'" msgstr "" "external ref='figures/drawingarea_pango_text.png' " "md5='07c39668c9dda2ac1f9455caf6e4d16a'" #. (itstool) path: section/para #: C/index-in.docbook:3513 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:3518 #, fuzzy #| msgid "Simple Example" msgid "Complex Example" msgstr "Enkelt exempel" #. (itstool) path: section/para #: C/index-in.docbook:3520 msgid "" "This is a more complex example with two SignalListItemFactory objects and their signal handlers. This example would be simpler " "without the checkmark in the dropdown menu." msgstr "" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3528 #, fuzzy msgctxt "_" msgid "" "external ref='figures/dropdown_complex.png' " "md5='2167fb44e42653aa7fd855604c4c1e65'" msgstr "" "external ref='figures/combobox_complex.png' " "md5='ec96e29fe85caef072868284443e413e'" #. (itstool) path: section/para #: C/index-in.docbook:3532 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:3537 msgid "Combo Boxes" msgstr "Kombinationsrutor" #. (itstool) path: note/para #: C/index-in.docbook:3539 #, fuzzy #| msgid "" #| "Gdk::DrawContext and Gdk::CairoContext are new. Gdk::DrawingContext has been " #| "removed." msgid "" "Gtk::ComboBox and Gtk::ComboBoxText are deprecated since gtkmm 4.10. Use " "Gtk::DropDown in new code." msgstr "" "Gdk::DrawContext och Gdk::CairoContext är nya. Gdk::DrawingContext har tagits " "bort." #. (itstool) path: chapter/para #: C/index-in.docbook:3543 msgid "" "The ComboBox widget offers a list (or tree) of " "choices in a dropdown menu. If appropriate, it can show extra information " "about each item, such as text, a picture, a check button, or a progress bar. " "The ComboBox widget usually restricts the user to the " "available choices, but it can optionally have an Entry, allowing the user to enter arbitrary text if none of the " "available choices are suitable." msgstr "" "ComboBox-komponenten erbjuder en lista (eller ett " "träd) av val i en rullgardinsmeny. Om lämpligt kan den visa extra " "information om varje objekt, som text, en bild, en kryssruta eller en " "förloppsindikator. ComboBox-komponenten begränsar " "vanligen användaren till de tillgängliga valen, men den kan valfritt ha ett " "Entry, som låter användaren mata in godtycklig text " "om inget av de tillgängliga valen passar." #. (itstool) path: chapter/para #: C/index-in.docbook:3546 #, fuzzy msgid "" "The list is provided via a TreeModel, and columns " "from this model are added to the ComboBox's view with the " "ComboBox::pack_start() method. This provides " "flexibility and compile-time type-safety, but the ComboBoxText class provides a simpler text-based specialization in case that " "flexibility is not required." msgstr "" "Listan tillhandahålls via en TreeModel, och kolumner " "från denna modell läggs till vyn för ComboBox-komponenten med metoden " "ComboBox::pack_start(). Detta tillhandahåller " "flexibilitet och typsäkerhet under kompilering, men ComboBoxText-klassen tillhandahåller en enklare textbaserad specialisering om " "den flexibiliteten inte behövs." #. (itstool) path: chapter/para #: C/index-in.docbook:3549 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:3554 msgid "" "The model for a ComboBox can be defined and filled exactly as for a " "TreeView. For instance, you might derive a ComboBox " "class with one integer and one text column, like so:" msgstr "" "Modellen för en ComboBox kan definieras och fyllas i exakt som för en " "TreeView. Exempelvis kan du härleda en ComboBox med " "ett heltal och en textkolumn, så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3556 #, fuzzy, no-wrap msgid "" "class ModelColumns : public Gtk::TreeModel::ColumnRecord\n" "{\n" "public:\n" " ModelColumns()\n" " { add(m_col_id); add(m_col_name); }\n" "\n" " Gtk::TreeModelColumn<int> m_col_id;\n" " Gtk::TreeModelColumn<Glib::ustring> m_col_name;\n" "};\n" "\n" "ModelColumns m_columns;" msgstr "" "class ModelColumns : public Gtk::TreeModel::ColumnRecord\n" "{\n" "public:\n" " ModelColumns()\n" " { add(m_col_id); add(m_col_name); }\n" "\n" " Gtk::TreeModelColumn<int> m_col_id;\n" " Gtk::TreeModelColumn<Glib::ustring> m_col_name;\n" "};\n" "\n" "ModelColumns m_columns;" #. (itstool) path: section/para #: C/index-in.docbook:3568 #, fuzzy msgid "" "After appending rows to this model, you should provide the model to the " "ComboBox with the set_model() method. Then use the pack_start() or " "pack_end() methods to specify what columns will be " "displayed in the ComboBox. As with the TreeView you may either use the " "default cell renderer by passing the TreeModelColumn " "to the pack methods, or you may instantiate a specific " "CellRenderer and specify a particular mapping with " "either add_attribute() or " "set_cell_data_func(). Note that these methods are " "in the CellLayout base class." msgstr "" "Efter att ha lagt till rader till denna modell bör du tillhandahålla " "modellen till ComboBoxen med metoden " "set_model(). Använd sedan metoderna " "pack_start() eller pack_end() för att ange vilka kolumner som kommer visas i vår ComboBox. Som " "med TreeView kan du antingen använda standardcellrenderare genom att skicka " "TreeModelColumn till packmetoderna, eller så kan du " "instansiera en specifik CellRenderer och ange en viss " "mappning med antingen add_attribute() eller " "set_cell_data_func(). Observera att dessa metoder " "finns i basklassen CellLayout." #. (itstool) path: section/title #: C/index-in.docbook:3572 msgid "The chosen item" msgstr "Det valda objektet" #. (itstool) path: section/para #: C/index-in.docbook:3574 #, fuzzy msgid "" "To discover what item, if any, the user has chosen from the ComboBox, call " "ComboBox::get_active(). This returns a " "TreeModel::iterator that you can dereference to a " "Row in order to read the values in your columns. For " "instance, you might read an integer ID value from the model, even though you " "have chosen only to show the human-readable description in the ComboBox. For " "instance:" msgstr "" "För att upptäcka vilket objekt, om något, som användaren har valt från en " "ComboBox, anropa ComboBox::get_active(). " "DettaTreeModel::iterator returnerar en som du kan " "dereferera till en Row för att läsa värdena i dina " "kolumner. Exempelvis kanske du läser ett heltals-ID-värde från modellen, " "även om du valt att bara visa den mänskligt läsbara beskrivningen i vår " "ComboBox. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3576 #, fuzzy, no-wrap msgid "" "Gtk::TreeModel::iterator iter = m_Combo.get_active();\n" "if(iter)\n" "{\n" " auto row = *iter;\n" "\n" " //Get the data for the selected row, using our knowledge\n" " //of the tree model:\n" " auto id = row[m_Columns.m_col_id];\n" " set_something_id_chosen(id); //Your own function.\n" "}\n" "else\n" " set_nothing_chosen(); //Your own function." msgstr "" "Gtk::TreeModel::iterator iter = m_Combo.get_active();\n" "if(iter)\n" "{\n" " auto row = *iter;\n" "\n" " //Få data för markerad rad, med vår kunskap\n" " //om trädmodellen:\n" " auto id = row[m_Columns.m_col_id];\n" " set_something_id_chosen(id); //Din egen funktion.\n" "}\n" "else\n" " set_nothing_chosen(); //Din egen funktion." #. (itstool) path: section/para #: C/index-in.docbook:3593 #, fuzzy msgid "" "You might need to react to every change of selection in the ComboBox, for " "instance to update other widgets. To do so, you should handle the " "changed signal. For instance:" msgstr "" "Du behöver reagera på varje ändring av val i vår ComboBox, till exempel för " "att uppdatera andra komponenter. För att göra så bör du hantera signalen " "changed. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3596 #, no-wrap msgid "" "m_combo.signal_changed().connect( sigc::mem_fun(*this,\n" " &ExampleWindow::on_combo_changed) );" msgstr "" "m_combo.signal_changed().connect( sigc::mem_fun(*this,\n" " &ExampleWindow::on_combo_changed) );" #. (itstool) path: section/title #: C/index-in.docbook:3601 C/index-in.docbook:3687 msgid "Full Example" msgstr "Fullständigt exempel" #. (itstool) path: figure/title #: C/index-in.docbook:3604 msgid "ComboBox" msgstr "ComboBox" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3606 #, fuzzy msgctxt "_" msgid "" "external ref='figures/combobox_complex.png' " "md5='ec96e29fe85caef072868284443e413e'" msgstr "" "external ref='figures/combobox_complex.png' " "md5='ec96e29fe85caef072868284443e413e'" #. (itstool) path: section/para #: C/index-in.docbook:3610 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:3615 C/index-in.docbook:3701 msgid "Simple Text Example" msgstr "Enkelt textexempel" #. (itstool) path: figure/title #: C/index-in.docbook:3618 msgid "ComboBoxText" msgstr "ComboBoxText" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3620 #, fuzzy msgctxt "_" msgid "" "external ref='figures/combobox_text.png' " "md5='f8278861eaa5cdc1d165b577fc41ccf4'" msgstr "" "external ref='figures/combobox_text.png' " "md5='f8278861eaa5cdc1d165b577fc41ccf4'" #. (itstool) path: section/para #: C/index-in.docbook:3624 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:3629 msgid "ComboBox with an Entry" msgstr "ComboBox med ett Entry" #. (itstool) path: section/para #: C/index-in.docbook:3631 msgid "" "A ComboBox may contain an Entry widget for entering of arbitrary text, by specifying " "true for the constructor's has_entry " "parameter." msgstr "" "En ComboBox kan innehålla en Entry-komponent för inmatning av godtycklig text genom att ange " "true för konstruktorns has_entry-" "parameter." #. (itstool) path: section/title #: C/index-in.docbook:3634 msgid "The text column" msgstr "Textkolumnen" #. (itstool) path: section/para #: C/index-in.docbook:3636 #, fuzzy msgid "" "So that the Entry can interact with the drop-down " "list of choices, you must specify which of your model columns is the text " "column, with set_entry_text_column(). For instance:" msgstr "" "För att Entryt ska kunna interagera med " "rullgardinslistan med val, måste du ange vilken av dina modellkolumner som " "är textkolumnen med set_entry_text_column(). Till " "exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3638 #, fuzzy, no-wrap msgid "m_combo.set_entry_text_column(m_columns.m_col_name);" msgstr "m_combo.set_entry_text_column(m_columns.m_col_name);" #. (itstool) path: section/para #: C/index-in.docbook:3639 #, fuzzy msgid "" "When you select a choice from the drop-down menu, the value from this column " "will be placed in the Entry." msgstr "" "När du väljer ett val från rullgardinsmenyn kommer värdet från denna kolumn " "placeras i Entryt." #. (itstool) path: section/title #: C/index-in.docbook:3645 #, fuzzy msgid "The entry" msgstr "Inmatningen" #. (itstool) path: section/para #: C/index-in.docbook:3647 msgid "" "Because the user may enter arbitrary text, an active model row isn't enough " "to tell us what text the user has entered. Therefore, you should retrieve " "the Entry widget with the ComboBox::" "get_entry() method and call get_text() " "on that." msgstr "" "Eftersom användaren kan mata in godtycklig text är en aktiv modellrad inte " "tillräckligt för att säga till oss vilken text som användaren har matat in. " "Du bör därför erhålla Entry-komponenten med metoden " "ComboBox::get_entry() och anropa " "get_text() på den." #. (itstool) path: section/para #: C/index-in.docbook:3654 #, fuzzy msgid "" "When the user enters arbitrary text, it may not be enough to connect to the " "changed signal, which is emitted for every typed " "character. It is not emitted when the user presses the Enter key. Pressing the Enter key or moving the keyboard " "focus to another widget may signal that the user has finished entering text. " "To be notified of these events, connect to the Entry's activate signal (available since " "gtkmm 4.8), and add a Gtk::" "EventControllerFocus and connect to its leave " "signal, like so" msgstr "" "När användaren matar in godtyckligt text är det kanske inte tillräckligt att " "ansluta till signalen changed, som sänds ut för varje " "inmatat tecken. Den sänds inte ut när användaren trycker på Retur-tangenten. Att trycka på Retur-tangenten eller " "flytta tangentbordsfokus till en annan komponent kan signalera att " "användaren slutat mata in text. För att aviseras om dessa händelse ansluter " "du till Entryts activate-signal " "(tillgänglig sedan gtkmm 4.8.0), och lägger till " "ett Gtk::EventControllerFocus och ansluter till des " "leave-signal, så här" #. (itstool) path: section/programlisting #: C/index-in.docbook:3664 #, fuzzy, no-wrap msgid "" "auto entry = m_Combo.get_entry();\n" "if (entry)\n" "{\n" " // Alternatively you can connect to m_Combo.signal_changed().\n" " entry->signal_changed().connect(sigc::mem_fun(*this,\n" " &ExampleWindow::on_entry_changed));\n" " entry->signal_activate().connect(sigc::mem_fun(*this,\n" " &ExampleWindow::on_entry_activate));\n" " // The Entry shall receive focus-leave events.\n" " auto controller = Gtk::EventControllerFocus::create();\n" " m_ConnectionFocusLeave = controller->signal_leave().connect(\n" " sigc::mem_fun(*this, &ExampleWindow::on_entry_focus_leave));\n" " entry->add_controller(controller);\n" "}" msgstr "" "auto entry = m_Combo.get_entry();\n" "if (entry)\n" "{\n" " // Alternativt kan du ansluta till m_Combo.signal_changed().\n" " entry->signal_changed().connect(sigc::mem_fun(*this,\n" " &ExampleWindow::on_entry_changed));\n" " entry->signal_activate().connect(sigc::mem_fun(*this,\n" " &ExampleWindow::on_entry_activate));\n" " // Entry ska ta emot fokuslämnande händelser.\n" " auto controller = Gtk::EventControllerFocus::create();\n" " m_ConnectionFocusLeave = controller->signal_leave().connect(\n" " sigc::mem_fun(*this, &ExampleWindow::on_entry_focus_leave));\n" " entry->add_controller(controller);\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:3678 #, fuzzy msgid "" "The changed signals of ComboBox " "and Entry are both emitted for every change. It " "doesn't matter which one you connect to. But the " "EventControllerFocus must be added to the " "Entry." msgstr "" "changed-signalerna för ComboBox " "och Entry sänds båda ut för varje ändring. Det spelar " "ingen roll vilken du ansluter till. Men detta " "EventControllerFocus måste läggas till i " "Entryt." #. (itstool) path: figure/title #: C/index-in.docbook:3690 #, fuzzy msgid "ComboBox with Entry" msgstr "ComboBox med Entry" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3692 #, fuzzy msgctxt "_" msgid "" "external ref='figures/comboboxentry_complex.png' " "md5='09bd46bc2fb93193ed4f9cf910ede733'" msgstr "" "external ref='figures/comboboxentry_complex.png' " "md5='09bd46bc2fb93193ed4f9cf910ede733'" #. (itstool) path: section/para #: C/index-in.docbook:3696 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: figure/title #: C/index-in.docbook:3704 #, fuzzy msgid "ComboBoxText with Entry" msgstr "ComboBoxText med Entry" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3706 #, fuzzy msgctxt "_" msgid "" "external ref='figures/comboboxentry_text.png' " "md5='164e857e073b574d6176927c8247ad96'" msgstr "" "external ref='figures/comboboxentry_text.png' " "md5='164e857e073b574d6176927c8247ad96'" #. (itstool) path: section/para #: C/index-in.docbook:3710 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #. (itstool) path: figure/title #: C/index-in.docbook:3718 C/index-in.docbook:3943 msgid "TextView" msgstr "TextView" #. (itstool) path: chapter/para #: C/index-in.docbook:3720 #, fuzzy msgid "" "The TextView widget can be used to display and edit " "large amounts of formatted text. Like the TreeView, " "it has a model/view design. In this case the TextBuffer is the model." msgstr "" "TextView-komponenten kan användas för att visa och " "redigera stora mängder formaterad text. Som TreeView " "har det en model/view-design. I detta fall är det TextBuffer som är modellen." #. (itstool) path: section/title #: C/index-in.docbook:3728 msgid "The Buffer" msgstr "Bufferten" #. (itstool) path: section/para #: C/index-in.docbook:3730 #, fuzzy msgid "" "Gtk::TextBuffer is a model containing the data for " "the Gtk::TextView, like the Gtk::" "TreeModel used by Gtk::TreeView. This " "allows two or more Gtk::TextViews to share the same " "TextBuffer, and allows those TextBuffers to be " "displayed slightly differently. Or you could maintain several " "Gtk::TextBuffers and choose to display each one at " "different times in the same Gtk::TextView widget." msgstr "" "Gtk::TextBuffer är en modell som innehåller data för " "Gtk::TextView, som den Gtk::TreeModel som används av Gtk::TreeView. Detta " "tillåter två eller fler Gtk::TextView att dela på " "samma TextBuffer, och låter dessa TextBuffer-" "komponenter visas lite olika. Eller så kan du underhålla flera " "Gtk::TextBuffer-komponenter och välja att visa var " "och en på olika tider i samma Gtk::TextView-komponent." #. (itstool) path: section/para #: C/index-in.docbook:3740 #, fuzzy msgid "" "The TextView creates its own default " "TextBuffer, which you can access via the " "get_buffer() method." msgstr "" "TextView skapar sin egen standard-" "TextBuffer, som du kan komma åt genom metoden " "get_buffer()." #. (itstool) path: section/para #: C/index-in.docbook:3746 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:3749 msgid "Iterators" msgstr "Iteratorer" #. (itstool) path: section/para #: C/index-in.docbook:3751 #, fuzzy msgid "" "A Gtk::TextBuffer::iterator and a Gtk::" "TextBuffer::const_iterator represent a position between two " "characters in the text buffer. Whenever the buffer is modified in a way that " "affects the number of characters in the buffer, all outstanding iterators " "become invalid. Because of this, iterators can't be used to preserve " "positions across buffer modifications. To preserve a position, use " "Gtk::TextBuffer::Mark." msgstr "" "En Gtk::TextBuffer::iterator och en Gtk::" "TextBuffer::const_iterator representerar en position mellan två " "tecken i textbufferten. Närhelst bufferten ändras på ett sätt som påverkar " "antalet tecken i bufferten kommer alla de tidigare iteratorerna bli " "ogiltiga. På grund av detta kan iteratorer inte användas för att bevara " "positioner genom buffertändringar. För att bevara en position, använd " "Gtk::TextBuffer::Mark." #. (itstool) path: section/para #: C/index-in.docbook:3758 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:3762 msgid "Tags and Formatting" msgstr "Taggar och formatering" #. (itstool) path: section/title #: C/index-in.docbook:3765 msgid "Tags" msgstr "Taggar" #. (itstool) path: section/para #: C/index-in.docbook:3767 #, fuzzy msgid "" "To specify that some text in the buffer should have specific formatting, you " "must define a tag to hold that formatting information, and then apply that " "tag to the region of text. For instance, to define the tag and its " "properties:" msgstr "" "För att ange att någon text i bufferten ska ha specifik formatering måste du " "ange en tagg för att hålla den formatinformationen, och sedan tillämpa den " "taggen på textområdet. För att exempelvis definiera taggen och dess " "egenskaper:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3770 #, no-wrap msgid "" "auto refTagMatch = Gtk::TextBuffer::Tag::create();\n" "refTagMatch->property_background() = \"orange\";" msgstr "" "auto refTagMatch = Gtk::TextBuffer::Tag::create();\n" "refTagMatch->property_background() = \"orange\";" #. (itstool) path: section/para #: C/index-in.docbook:3772 #, fuzzy msgid "" "You can specify a name for the Tag when using the " "create() method, but it is not necessary." msgstr "" "Du kan ange ett namn för denna Tag när du använder " "create()-metoden, men det är inte nödvändigt." #. (itstool) path: section/para #: C/index-in.docbook:3777 msgid "The Tag class has many other properties." msgstr "Klassen Tag har många andra egenskaper." #. (itstool) path: section/para #: C/index-in.docbook:3781 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:3786 msgid "TagTable" msgstr "TagTable" #. (itstool) path: section/para #: C/index-in.docbook:3788 #, fuzzy msgid "" "Each Gtk::TextBuffer uses a Gtk::" "TextBuffer::TagTable, which contains the Tags for that buffer. 2 or more TextBuffers " "may share the same TagTable. When you create " "Tags you should add them to the TagTable. For instance:" msgstr "" "Varje Gtk::TextBuffer använder en Gtk::" "TextBuffer::TagTable, vilken innehåller den buffertens " "Taggar. 2 eller fler TextBuffer kan dela på samma TagTable. När du skapar " "Taggar bör du lägga till dem i denna " "TagTable. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3796 #, fuzzy, no-wrap msgid "" "auto refTagTable = Gtk::TextBuffer::TagTable::create();\n" "refTagTable->add(refTagMatch);\n" "//Hopefully a future version of gtkmm will have a set_tag_table() method,\n" "//for use after creation of the buffer.\n" "auto refBuffer = Gtk::TextBuffer::create(refTagTable);" msgstr "" "auto refTagTable = Gtk::TextBuffer::TagTable::create();\n" "refTagTable->add(refTagMatch);\n" "//Förhoppningsvis kommer en framtida version av gtkmm ha en set_tag_table()-metod,\n" "//för användning efter skapande av bufferten.\n" "auto refBuffer = Gtk::TextBuffer::create(refTagTable);" #. (itstool) path: section/para #: C/index-in.docbook:3802 #, fuzzy msgid "" "You can also use get_tag_table() to get, and maybe " "modify, the TextBuffer's default TagTable instead of creating one explicitly." msgstr "" "Du kan också använda get_tag_table() för att få, " "och kanske modifiera, TextBuffertens " "TagTable i stället för att skapa en explicit." #. (itstool) path: section/para #: C/index-in.docbook:3808 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:3813 msgid "Applying Tags" msgstr "Tillämpa taggar" #. (itstool) path: section/para #: C/index-in.docbook:3815 #, fuzzy msgid "" "If you have created a Tag and added it to the " "TagTable, you may apply that tag to part of the " "TextBuffer so that some of the text is displayed with " "that formatting. You define the start and end of the range of text by " "specifying Gtk::TextBuffer::iterators. For instance:" msgstr "" "Om du har skapat en Tag och lagt till den till din " "TagTable kan du tillämpa den taggen på en del av din " "TextBuffer så att delar av texten visas med den " "formateringen. Du definierar start och slut på textintervallet genom att att " "ange Gtk::TextBuffer::iteratorer. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3822 #, fuzzy, no-wrap msgid "refBuffer->apply_tag(refTagMatch, iterRangeStart, iterRangeStop);" msgstr "refBuffer->apply_tag(refTagMatch, iterRangeStart, iterRangeStop);" #. (itstool) path: section/para #: C/index-in.docbook:3823 #, fuzzy msgid "Or you could specify the tag when first inserting the text:" msgstr "Eller så kan du ange texten när du först infogar texten:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3826 #, fuzzy, no-wrap msgid "refBuffer->insert_with_tag(iter, \"Some text\", refTagMatch);" msgstr "refBuffer->insert_with_tag(iter, \"Lite text\", refTagMatch);" #. (itstool) path: section/para #: C/index-in.docbook:3828 #, fuzzy msgid "" "You can apply more than one Tag to the same text, by " "using apply_tag() more than once, or by using " "insert_with_tags(). The Tags " "might specify different values for the same properties, but you can resolve " "these conflicts by using Tag::set_priority()." msgstr "" "Du kan tillämpa mer än en Tag på samma text, genom " "att använda apply_tag() mer än en gång, eller genom " "att använda insert_with_tags(). The Taggarna kan ange olika värden för samma egenskaper, men du kan lösa " "dessa konflikter genom att använda Tag::set_priority()." #. (itstool) path: section/title #: C/index-in.docbook:3840 #, fuzzy msgid "Marks" msgstr "Mark" #. (itstool) path: section/para #: C/index-in.docbook:3842 msgid "" "TextBuffer iterators are generally invalidated when " "the text changes, but you can use a Gtk::TextBuffer::Mark to remember a position in these situations. For instance," msgstr "" "TextBuffer-iteratorer görs vanligen ogiltiga när " "texten ändras, men du kan använda ett Gtk::TextBuffer::Mark för att komma ihåg en position i dessa fall. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:3847 #, no-wrap msgid "auto refMark = refBuffer->create_mark(iter);" msgstr "auto refMark = refBuffer->create_mark(iter);" #. (itstool) path: section/para #: C/index-in.docbook:3849 #, fuzzy msgid "" "You can then use the get_iter() method later to " "create an iterator for the Mark's new position." msgstr "" "Du kan sedan använda metoden get_iter() för att " "senare skapa en iterator för den nya positionen för detta Mark." #. (itstool) path: section/para #: C/index-in.docbook:3854 #, fuzzy msgid "" "There are two built-in Marks - insert and selection_bound, which you can access with " "TextBuffer's get_insert() " "and get_selection_bound() methods." msgstr "" "Det finns två inbyggda Mark - insert och selection_bound, vilka du kan komma åt med " "TextBuffertens metoder get_insert() och get_selection_bound()." #. (itstool) path: section/para #: C/index-in.docbook:3861 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:3868 msgid "" "As mentioned above, each TextView has a " "TextBuffer, and one or more TextViews can share the same TextBuffer." msgstr "" "Som nämns ovan har varje TextView en " "TextBuffer, och en eller flera TextView kan dela på samma TextBuffer." #. (itstool) path: section/para #: C/index-in.docbook:3875 #, fuzzy msgid "" "Like the TreeView, you should probably put your " "TextView inside a ScrolledWindow to allow the user to see and move around the whole text area with " "scrollbars." msgstr "" "Som med TreeView bör du troligen stoppa din " "TextView i ett ScrolledWindow " "för att låta användaren se och gå runt i hela textområdet med " "rullningslister." #. (itstool) path: section/para #: C/index-in.docbook:3882 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:3885 msgid "Default formatting" msgstr "Standardformatering" #. (itstool) path: section/para #: C/index-in.docbook:3887 #, fuzzy msgid "" "TextView has various methods which allow you to " "change the presentation of the buffer for this particular view. Some of " "these may be overridden by the Gtk::TextTags in the " "buffer, if they specify the same things. For instance, " "set_left_margin(), set_right_margin(), set_indent(), etc." msgstr "" "TextView har olika metoder som låter dig ändra " "buffertens presentation för denna specifika vy. Vissa av dessa kan " "åsidosättas av de Gtk::TextTag som finns i bufferten, " "om de anger samma saker. Exempelvis set_left_margin(), set_right_margin(), " "set_indent() och så vidare." #. (itstool) path: section/title #: C/index-in.docbook:3898 msgid "Scrolling" msgstr "Rullning" #. (itstool) path: section/para #: C/index-in.docbook:3900 msgid "" "Gtk::TextView has various scroll_to() methods. These allow you to ensure that a particular part of the " "text buffer is visible. For instance, your application's Find feature might " "use Gtk::TextView::scroll_to() to show the found " "text." msgstr "" "Gtk::TextView har olika scroll_to()-metoder. Dessa låter dig säkerställa att en viss del av " "textbufferten är synlig. Exempelvis använder ditt programs sökfunktion " "kanske Gtk::TextView::scroll_to() för att visa den " "hittade texten." #. (itstool) path: section/title #: C/index-in.docbook:3915 #, fuzzy msgid "Widgets and ChildAnchors" msgstr "Komponenter och ChildAnchor" #. (itstool) path: section/para #: C/index-in.docbook:3917 #, fuzzy msgid "" "You can embed widgets, such as Gtk::Buttons, in the " "text. Each such child widget needs a ChildAnchor. " "ChildAnchors are associated with iterators. For " "instance, to create a child anchor at a particular position, use " "Gtk::TextBuffer::create_child_anchor():" msgstr "" "Du kan bädda in komponenter, som Gtk::Button, i " "texten. Varje sådan underordnad komponent behöver ett " "ChildAnchor. ChildAnchor är associerat med " "iteratorer. För att exempelvis skapa ett ankare för " "underordnade på en viss position använder du Gtk::TextBuffer::" "create_child_anchor():" #. (itstool) path: section/programlisting #: C/index-in.docbook:3924 #, no-wrap msgid "auto refAnchor = refBuffer->create_child_anchor(iter);" msgstr "auto refAnchor = refBuffer->create_child_anchor(iter);" #. (itstool) path: section/para #: C/index-in.docbook:3926 msgid "" "Then, to add a widget at that position, use Gtk::TextView::" "add_child_at_anchor():" msgstr "" "Använd sedan Gtk::TextView::add_child_at_anchor() " "för att lägga till en komponent på den positionen:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3930 #, no-wrap msgid "m_TextView.add_child_at_anchor(m_Button, refAnchor);" msgstr "m_TextView.add_child_at_anchor(m_Button, refAnchor);" #. (itstool) path: section/para #: C/index-in.docbook:3932 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:3945 #, fuzzy msgctxt "_" msgid "" "external ref='figures/textview.png' md5='451e30f66cc32c4231bb6bc442cf0d2f'" msgstr "" "external ref='figures/textview.png' md5='451e30f66cc32c4231bb6bc442cf0d2f'" #. (itstool) path: section/para #: C/index-in.docbook:3949 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:3956 msgid "Menus and Toolbars" msgstr "Menyer och verktygsfält" #. (itstool) path: chapter/para #: C/index-in.docbook:3958 msgid "" "There are specific APIs for menus and toolbars, but you should usually deal " "with them together, creating Gio::SimpleActions that " "you can refer to in both menus and toolbars. In this way you can handle " "activation of the action instead of responding to the menu and toolbar items " "separately. And you can enable or disable both the menu and toolbar item via " "the action. Gtk::Builder can create menus and " "toolbars." msgstr "" "Det finns specifika API:er för menyer och verktygsfält, men du bör vanligen " "hantera dem tillsammans genom att skapa Gio::SimpleAction-åtgärder som du kan hänvisa till både i menyer och verktygsfält. " "På detta sätt kan du hantera aktivering av åtgärden i stället för att svara " "på menyns och verktygsfältets objekt separat. Och du kan aktivera eller " "inaktivera både menyns och verktygsfältets objekt via åtgärden. " "Gtk::Builder kan skapa menyer och verktygsfält." #. (itstool) path: chapter/para #: C/index-in.docbook:3966 msgid "" "This involves the use of the Gio::SimpleActionGroup, " "Gio::SimpleAction and Gtk::Builder classes, all of which should be instantiated via their " "create() methods, which return RefPtrs." msgstr "" "Detta involverar användningen av klasserna Gio::" "SimpleActionGroup, Gio::SimpleAction och " "Gtk::Builder, vilka alla ska instansieras via sina " "create()-metoder, vilka returnerar " "RefPtr-pekare." #. (itstool) path: section/title #: C/index-in.docbook:3974 msgid "Actions" msgstr "Åtgärder" #. (itstool) path: section/para #: C/index-in.docbook:3976 msgid "" "First create the Gio::SimpleActions and add them to a " "Gio::SimpleActionGroup, with Gio::" "ActionMap::add_action(). (Gio::ActionMap " "is a base class of Gio::SimpleActionGroup.) Then add " "the action group to your window with Gtk::Widget::" "insert_action_group()." msgstr "" "Skapa först Gio::SimpleAction-åtgärder och lägg till " "dem till en Gio::SimpleActionGroup med " "Gio::ActionMap::add_action(). (Gio::" "ActionMap är en basklass för Gio::SimpleActionGroup.) Lägg sedan till åtgärdsgruppen till ditt fönster med " "Gtk::Widget::insert_action_group()." #. (itstool) path: section/para #: C/index-in.docbook:3984 msgid "" "The arguments to add_action() specify the action's " "name, which is used in the menu items and toolbar buttons. You can also " "specify a signal handler when calling add_action(). " "This signal handler will be called when the action is activated via either a " "menu item or a toolbar button." msgstr "" "Argumenten till add_action() anger åtgärdens namn, " "vilket används i menyobjekten och verktygsfältsknapparna. Du kan också ange " "en signalhanterare när du anropar add_action(). " "Denna signalhanterare kommer anropas när åtgärden aktiveras antingen via ett " "menyobjekt eller en verktygsfältsknapp." #. (itstool) path: section/para #: C/index-in.docbook:3992 C/index-in.docbook:4119 msgid "For instance:" msgstr "Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:3994 #, fuzzy, no-wrap msgid "" "\n" "m_refActionGroup = Gio::SimpleActionGroup::create();\n" "\n" "m_refActionGroup->add_action(\"new\", sigc::mem_fun(*this, &ExampleWindow::on_action_file_new));\n" "m_refActionGroup->add_action(\"open\", sigc::mem_fun(*this, &ExampleWindow::on_action_file_open));\n" "m_refActionGroup->add_action(\"quit\", sigc::mem_fun(*this, &ExampleWindow::on_action_file_quit));\n" "\n" "insert_action_group(\"example\", m_refActionGroup);\n" msgstr "" "\n" "m_refActionGroup = Gio::SimpleActionGroup::create();\n" "\n" "m_refActionGroup->add_action(\"new\", sigc::mem_fun(*this, &ExampleWindow::on_action_file_new));\n" "m_refActionGroup->add_action(\"open\", sigc::mem_fun(*this, &ExampleWindow::on_action_file_open));\n" "m_refActionGroup->add_action(\"quit\", sigc::mem_fun(*this, &ExampleWindow::on_action_file_quit));\n" "\n" "insert_action_group(\"example\", m_refActionGroup);\n" #. (itstool) path: section/para #: C/index-in.docbook:4004 msgid "" "If you use an Gtk::ApplicationWindow, you don't have " "to create your own action group. Gio::ActionGroup and " "Gio::ActionMap are base classes of Gtk::" "ApplicationWindow." msgstr "" "Om du använder ett Gtk::ApplicationWindow behöver du " "inte skapa din egen åtgärdsgrupp. Gio::ActionGroup " "och Gio::ActionMap är basklasser för Gtk::" "ApplicationWindow." #. (itstool) path: section/title #: C/index-in.docbook:4015 msgid "Menubar and Toolbar" msgstr "Menyrad och verktygsfält" #. (itstool) path: section/para #: C/index-in.docbook:4017 msgid "" "Next you should create a Gtk::Builder. At this point " "is also a good idea to tell the application to respond to keyboard " "shortcuts, by using Gtk::Application::set_accel_for_action()." msgstr "" "Härnäst ska du skapa en Gtk::Builder. Vid detta " "tillfälle är det också en bra idé att säga till programmet att svara på " "tangentbordsgenvägar genom att använda Gtk::Application::" "set_accel_for_action()." #. (itstool) path: section/para #: C/index-in.docbook:4023 C/index-in.docbook:5735 C/index-in.docbook:5800 #: C/index-in.docbook:11493 msgid "For instance," msgstr "Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:4025 #, fuzzy, no-wrap msgid "" "\n" "m_refBuilder = Gtk::Builder::create();\n" "\n" "app->set_accel_for_action(\"example.new\", \"<Primary>n\");\n" "app->set_accel_for_action(\"example.quit\", \"<Primary>q\");\n" "app->set_accel_for_action(\"example.copy\", \"<Primary>c\");\n" "app->set_accel_for_action(\"example.paste\", \"<Primary>v\");\n" msgstr "" "\n" "m_refBuilder = Gtk::Builder::create();\n" "\n" "app->set_accel_for_action(\"example.new\", \"<Primary>n\");\n" "app->set_accel_for_action(\"example.quit\", \"<Primary>q\");\n" "app->set_accel_for_action(\"example.copy\", \"<Primary>c\");\n" "app->set_accel_for_action(\"example.paste\", \"<Primary>v\");\n" #. (itstool) path: section/para #: C/index-in.docbook:4044 #, fuzzy msgid "" "Then, you can define the actual visible layout of the menus and toolbars, " "and add the UI layout to the Builder. This \"ui " "string\" uses an XML format, in which you should mention the names of the " "actions that you have already created. For instance:" msgstr "" "Sedan kan du definiera den faktiska synliga layouten för menyerna och " "verktygsfälten, och lägga till UI-layouten till vår Builder. Denna ”ui-sträng” använder ett XML-format, i vilket du ska nämna " "namnet på åtgärderna som du redan skapat. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4050 #, fuzzy, no-wrap msgid "" "\n" "Glib::ustring ui_info =\n" " \"<interface>\"\n" " \" <menu id='menubar'>\"\n" " \" <submenu>\"\n" " \" <attribute name='label' translatable='yes'>_File</attribute>\"\n" " \" <section>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_New</attribute>\"\n" " \" <attribute name='action'>example.new</attribute>\"\n" " \" </item>\"\n" " \" </section>\"\n" " \" <section>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_Quit</attribute>\"\n" " \" <attribute name='action'>example.quit</attribute>\"\n" " \" </item>\"\n" " \" </section>\"\n" " \" </submenu>\"\n" " \" <submenu>\"\n" " \" <attribute name='label' translatable='yes'>_Edit</attribute>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_Copy</attribute>\"\n" " \" <attribute name='action'>example.copy</attribute>\"\n" " \" </item>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_Paste</attribute>\"\n" " \" <attribute name='action'>example.paste</attribute>\"\n" " \" </item>\"\n" " \" </submenu>\"\n" " \" </menu>\"\n" " \"</interface>\";\n" "\n" "m_refBuilder->add_from_string(ui_info);\n" "m_refBuilder->add_from_resource(\"/toolbar/toolbar.ui\");\n" msgstr "" "\n" "Glib::ustring ui_info =\n" " \"<interface>\"\n" " \" <menu id='menubar'>\"\n" " \" <submenu>\"\n" " \" <attribute name='label' translatable='yes'>_File</attribute>\"\n" " \" <section>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_New</attribute>\"\n" " \" <attribute name='action'>example.new</attribute>\"\n" " \" </item>\"\n" " \" </section>\"\n" " \" <section>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_Quit</attribute>\"\n" " \" <attribute name='action'>example.quit</attribute>\"\n" " \" </item>\"\n" " \" </section>\"\n" " \" </submenu>\"\n" " \" <submenu>\"\n" " \" <attribute name='label' translatable='yes'>_Edit</attribute>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_Copy</attribute>\"\n" " \" <attribute name='action'>example.copy</attribute>\"\n" " \" </item>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>_Paste</attribute>\"\n" " \" <attribute name='action'>example.paste</attribute>\"\n" " \" </item>\"\n" " \" </submenu>\"\n" " \" </menu>\"\n" " \"</interface>\";\n" "\n" "m_refBuilder->add_from_string(ui_info);\n" "m_refBuilder->add_from_resource(\"/toolbar/toolbar.glade\");\n" #. (itstool) path: section/para #: C/index-in.docbook:4087 msgid "" "This is where we specify the names of the menu items as they will be seen by " "users in the menu. Therefore, this is where you should make strings " "translatable, by adding translatable='yes'." msgstr "" "Här anger vi namnen för menyobjekten som de kommer ses av användare i menyn. " "Det är därför här som du ska göra strängar översättbara genom att lägga till " "translatable='yes'." #. (itstool) path: section/para #: C/index-in.docbook:4091 #, fuzzy msgid "" "To instantiate a Gtk::PopoverMenuBar and toolbar (a " "horizontal Gtk::Box) which you can actually show, you " "should use the Builder::get_object() and " "Builder::get_widget() methods, and then add the " "widgets to a container. For instance:" msgstr "" "För att instansiera en Gtk::PopoverMenuBar och " "verktygsfält (en horisontell Gtk::Box) som du " "faktiskt kan visa, bör du använda metoderna Builder::" "get_object() och Builder::get_widget(), och sedan lägga till komponenterna till en behållare. Till " "exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4098 #, fuzzy, no-wrap msgid "" "\n" "auto gmenu = m_refBuilder->get_object<Gio::Menu>(\"menubar\");\n" "auto pMenuBar = Gtk::make_managed<Gtk::PopoverMenuBar>(gmenu);\n" "m_Box.append(*pMenuBar);\n" "\n" "auto toolbar = m_refBuilder->get_widget<Gtk::Box>(\"toolbar\");\n" "m_Box.append(*toolbar);\n" msgstr "" "\n" "auto gmenu = m_refBuilder->get_object<Gio::Menu>(\"menubar\");\n" "auto pMenuBar = Gtk::make_managed<Gtk::PopoverMenuBar>(gmenu);\n" "m_Box.append(*pMenuBar);\n" "\n" "auto toolbar = m_refBuilder->get_widget<Gtk::Box>(\"toolbar\");\n" "m_Box.append(*toolbar);\n" #. (itstool) path: section/title #: C/index-in.docbook:4111 msgid "Popup Menus" msgstr "Poppuppmenyer" #. (itstool) path: section/para #: C/index-in.docbook:4112 #, fuzzy msgid "" "Menus are normally just added to a window, but they " "can also be displayed temporarily as the result of a mouse button click. For " "instance, a context menu might be displayed when the user clicks their right " "mouse button." msgstr "" "Menu läggs vanligen bara till i ett fönster, men de " "kan också visas tillfälligt som resultatet av ett musklick. En snabbvalsmeny " "kan exempelvis visas när användaren klickar på höger musknapp." #. (itstool) path: section/programlisting #: C/index-in.docbook:4121 #, fuzzy, no-wrap msgid "" "\n" "Glib::ustring ui_info =\n" " \"<interface>\"\n" " \" <menu id='menu-examplepopup'>\"\n" " \" <section>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>Edit</attribute>\"\n" " \" <attribute name='action'>examplepopup.edit</attribute>\"\n" " \" </item>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>Process</attribute>\"\n" " \" <attribute name='action'>examplepopup.process</attribute>\"\n" " \" </item>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>Remove</attribute>\"\n" " \" <attribute name='action'>examplepopup.remove</attribute>\"\n" " \" </item>\"\n" " \" </section>\"\n" " \" </menu>\"\n" " \"</interface>\";\n" "\n" "m_refBuilder->add_from_string(ui_info);\n" "\n" "auto gmenu = m_refBuilder->get_object<Gio::Menu>(\"menu-examplepopup\");\n" "m_MenuPopup.set_menu_model(gmenu);\n" msgstr "" "\n" "Glib::ustring ui_info =\n" " \"<interface>\"\n" " \" <menu id='menu-examplepopup'>\"\n" " \" <section>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>Edit</attribute>\"\n" " \" <attribute name='action'>examplepopup.edit</attribute>\"\n" " \" </item>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>Process</attribute>\"\n" " \" <attribute name='action'>examplepopup.process</attribute>\"\n" " \" </item>\"\n" " \" <item>\"\n" " \" <attribute name='label' translatable='yes'>Remove</attribute>\"\n" " \" <attribute name='action'>examplepopup.remove</attribute>\"\n" " \" </item>\"\n" " \" </section>\"\n" " \" </menu>\"\n" " \"</interface>\";\n" "\n" "m_refBuilder->add_from_string(ui_info);\n" "\n" "auto gmenu = m_refBuilder->get_object<Gio::Menu>(\"menu-examplepopup\");\n" "m_MenuPopup.set_menu_model(gmenu);\n" #. (itstool) path: section/para #: C/index-in.docbook:4148 #, fuzzy #| msgid "" #| "To show the popup menu, use a Gtk::EventControllerClick and connect to its pressed signal. In the " #| "signal handler, use Gtk::PopoverMenu's " #| "popup() method. For instance:" msgid "" "To show the popup menu, use a Gtk::GestureClick and " "connect to its pressed signal. In the signal handler, use " "Gtk::PopoverMenu's popup() " "method. For instance:" msgstr "" "Använd för att visa poppuppmenyn en Gtk::EventControllerClick och anslut till dess pressed-signal. Använd i " "signalhanteraren Gtk::PopoverMenus " "popup()-metod. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4154 #, no-wrap msgid "" "\n" "void ExampleWindow::on_label_pressed(int /* n_press */, double x, double y)\n" "{\n" " const Gdk::Rectangle rect(x, y, 1, 1);\n" " m_MenuPopup.set_pointing_to(rect);\n" " m_MenuPopup.popup();\n" "}" msgstr "" "\n" "void ExampleWindow::on_label_pressed(int /* n_press */, double x, double y)\n" "{\n" " const Gdk::Rectangle rect(x, y, 1, 1);\n" " m_MenuPopup.set_pointing_to(rect);\n" " m_MenuPopup.popup();\n" "}" #. (itstool) path: section/title #: C/index-in.docbook:4165 msgid "Gio::Resource and glib-compile-resources" msgstr "Gio::Resource och glib-compile-resources" #. (itstool) path: section/para #: C/index-in.docbook:4167 #, fuzzy msgid "" "Applications and libraries often contain binary or textual data that is " "really part of the application, rather than user data. For instance " "Gtk::Builder .ui files, splashscreen images, Gio::Menu " "markup xml, CSS files, icons, etc. These are often shipped as files in " "$datadir/appname, or manually " "included as literal strings in the code." msgstr "" "Program och bibliotek innehåller ofta binär- och textdata som egentligen hör " "till programmet snarare än användardata. Exempelvis Gtk::Builders .glade-filer, " "uppstartsbilder, Gio::Menus markup-xml, CSS-filer, " "ikoner o.s.v. Dessa levereras ofta som filer i $datadir/appname, eller inkluderas manuellt " "som uttryckliga strängar i koden." #. (itstool) path: section/para #: C/index-in.docbook:4175 #, fuzzy msgid "" "The Gio::Resource API and the glib-" "compile-resources program provide a convenient and efficient " "alternative to this, which has some nice properties. You maintain the files " "as normal files, so it's easy to edit them, but during the build the files " "are combined into a binary bundle that is linked into the executable. This " "means that loading the resource files is efficient (as they are already in " "memory, shared with other instances) and simple (no need to check for things " "like I/O errors or locate the files in the filesystem). It also makes it " "easier to create relocatable applications." msgstr "" "Gio::Resource-API:t och programmet glib-" "compile-resources tillhandahåller ett bekvämt och effektivt " "alternativ till detta, vilket har några trevliga egenskaper. Du underhåller " "filerna som vanliga filer, så det är lätt att redigera dem, men under bygget " "komponeras filerna till en binär bunt som länkas till den exekverbara filen. " "Det här betyder att inläsning av resursfilerna är effektiv (då de redan " "finns i minnet, delade med andra instanser) och enkelt (inget behov av att " "kontrollera saker som I/O-fel eller hitta filerna i filsystemet). Det gör " "det också lättare att skapa flyttbara program." #. (itstool) path: section/para #: C/index-in.docbook:4187 #, fuzzy #| msgid "" #| "Resource bundles are created by the glib-compile-" #| "resources program which takes an xml file that describes the " #| "bundle, and a set of files that the xml references. These are combined " #| "into a binary resource bundle." msgid "" "Resource bundles are created by the glib-compile-resources program which takes an xml file that describes the bundle, and " "a set of files that the xml references. These are combined into a binary " "resource bundle." msgstr "" "Resursbuntar skapas av programmet glib-compile-resources som tar en xml-fil som beskriver bunten, och en uppsättning filer som " "xml-filen refererar till. Dessa kombineras till en binär resursbunt." #. (itstool) path: section/para #: C/index-in.docbook:4192 msgid "" "Gio::Resource Reference" msgstr "" "Referens för Gio::Resource" #. (itstool) path: section/para #: C/index-in.docbook:4193 #, fuzzy #| msgid "For example:" msgid "An example:" msgstr "Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4194 #, fuzzy, no-wrap msgid "" "\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<gresources>\n" " <gresource prefix=\"/toolbar\">\n" " <file preprocess=\"xml-stripblanks\">toolbar.ui</file>\n" " <file>rain.png</file>\n" " </gresource>\n" "</gresources>\n" msgstr "" "\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<gresources>\n" " <gresource prefix=\"/toolbar\">\n" " <file preprocess=\"xml-stripblanks\">toolbar.glade</file>\n" " <file>rain.png</file>\n" " </gresource>\n" "</gresources>\n" #. (itstool) path: listitem/para #: C/index-in.docbook:4205 #, fuzzy #| msgid "/toolbar/toolbar.glade" msgid "/toolbar/toolbar.ui" msgstr "/toolbar/toolbar.glade" #. (itstool) path: listitem/para #: C/index-in.docbook:4206 msgid "/toolbar/rain.png" msgstr "/toolbar/rain.png" #. (itstool) path: section/para #: C/index-in.docbook:4203 #, fuzzy #| msgid "" #| "An example: <_:programlisting-1/> This will create a resource bundle with " #| "the files <_:itemizedlist-2/>" msgid "This will create a resource bundle with the files <_:itemizedlist-1/>" msgstr "" "Ett exempel: <_:programlisting-1/> Detta kommer skapa en resursbunt med " "filerna <_:itemizedlist-2/>" #. (itstool) path: para/screen #: C/index-in.docbook:4214 #, no-wrap msgid "$ glib-compile-resources --target=resources.c --generate-source toolbar.gresource.xml" msgstr "$ glib-compile-resources --target=resources.c --generate-source toolbar.gresource.xml" #. (itstool) path: section/para #: C/index-in.docbook:4209 #, fuzzy msgid "" "You can then use glib-compile-resources to " "compile the xml to a binary bundle that you can load with Gio::" "Resource::create_from_file(). However, it's more common to use " "the --generate-source argument to " "create a C source file to link directly into your application. E.g. <_:" "screen-1/>" msgstr "" "Du kan sedan använda glib-compile-resources för " "att kompilera xml-filen till en binär bunt som du kan läsa in med " "Gio::Resource::create_from_file(). Det är dock " "vanligare att använda argumentet --generate-" "source för att skapa en C-källfil för att länka direkt till ditt " "program. T.ex. <_:screen-1/>" #. (itstool) path: section/para #: C/index-in.docbook:4216 #, fuzzy msgid "" "Once a Gio::Resource has been created and registered " "all the data in it can be accessed globally in the process by using API " "calls like Gio::Resource::open_stream_from_global_resources() to stream the data or Gio::Resource::" "lookup_data_in_global_resources() to get a direct pointer to " "the data. You can also use URIs like resource:///toolbar/rain.png " "with Gio::File to access the resource data." msgstr "" "När en Gio::Resource har skapats och registrerats kan " "alla data i den kommas åt globalt i processen genom att använda API-anrop " "som Gio::Resource::open_stream_from_global_resources() för att strömma data eller Gio::Resource::" "lookup_data_in_global_resources() för att få en direkt pekare " "till data. Du kan också använda URI:er som resource:///toolbar/rain." "png med Gio::File för att komma åt resursdata." #. (itstool) path: section/para #: C/index-in.docbook:4224 msgid "" "Often you don't need a Gio::Resource instance, " "because resource data can be loaded with methods such as Gdk::" "Pixbuf::create_from_resource(), Gtk::Builder::" "add_from_resource() and Gtk::Image::" "set_from_resource()." msgstr "" "Ofta behöver du ingen Gio::Resource-instans eftersom " "resursdata kan läsas in med metoder som Gdk::Pixbuf::" "create_from_resource(), Gtk::Builder::" "add_from_resource() och Gtk::Image::" "set_from_resource()." #. (itstool) path: section/title #: C/index-in.docbook:4238 msgid "Application Menu and Main Menu example" msgstr "Exempel på programmeny och huvudmeny" #. (itstool) path: section/para #: C/index-in.docbook:4239 msgid "" "This program contains an application menu, a menubar and a toolbar. Classes " "are derived from Gtk::Application and Gtk::" "ApplicationWindow." msgstr "" "Detta program innehåller en programmeny, en menyrad och ett verktygsfält. " "Klasser härleds från Gtk::Application och " "Gtk::ApplicationWindow." #. (itstool) path: figure/title #: C/index-in.docbook:4246 msgid "App and Main Menu" msgstr "Program- och huvudmeny" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4248 #, fuzzy msgctxt "_" msgid "" "external ref='figures/main_menu.png' md5='fc670c5887873c4c8ec1e5aa1e032680'" msgstr "" "external ref='figures/main_menu.png' md5='fc670c5887873c4c8ec1e5aa1e032680'" #. (itstool) path: section/para #: C/index-in.docbook:4252 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4257 msgid "Main Menu example" msgstr "Exempel på huvudmeny" #. (itstool) path: section/para #: C/index-in.docbook:4258 msgid "" "This program contains a menubar and a toolbar. A class is derived from " "Gtk::Window." msgstr "" "Detta program innehåller en menyrad och ett verktygsfält. En klass härleds " "från Gtk::Window." #. (itstool) path: figure/title #: C/index-in.docbook:4264 msgid "Main Menu" msgstr "Huvudmeny" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4266 #, fuzzy msgctxt "_" msgid "" "external ref='figures/menus_and_toolbars.png' " "md5='cbe894e7603b7c3de488d4c9ff503442'" msgstr "" "external ref='figures/menus_and_toolbars.png' " "md5='cbe894e7603b7c3de488d4c9ff503442'" #. (itstool) path: section/para #: C/index-in.docbook:4270 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4275 msgid "Popup Menu example" msgstr "Exempel på poppuppmeny" #. (itstool) path: figure/title #: C/index-in.docbook:4278 msgid "Popup Menu" msgstr "Poppuppmeny" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4280 #, fuzzy msgctxt "_" msgid "" "external ref='figures/menu_popup.png' md5='bd168ad48b89f488d29e13db9b765168'" msgstr "" "external ref='figures/menu_popup.png' md5='bd168ad48b89f488d29e13db9b765168'" #. (itstool) path: section/para #: C/index-in.docbook:4284 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:4291 #, fuzzy msgid "Adjustments" msgstr "Justeringar" #. (itstool) path: chapter/para #: C/index-in.docbook:4293 #, fuzzy msgid "" "gtkmm has various widgets that can be visually " "adjusted using the mouse or the keyboard, such as the Range widgets (described in the Range Widgets section). There are also a few widgets that " "display some adjustable part of a larger area, such as the " "Viewport widget. These widgets have Gtk::" "Adjustment objects that express this common part of their API." msgstr "" "gtkmm har olika komponenter som kan visuellt " "justeras med musen eller tangentbordet, som Range-" "komponenterna (beskrivna i avsnittet Range-komponenter). Det finns också några komponenter som " "visar en justerbar del av ett större område, som Viewport-komponenten. Dessa komponenter har Gtk::Adjustment-objekt som uttrycker denna gemensamma del av deras API." #. (itstool) path: chapter/para #: C/index-in.docbook:4303 msgid "" "So that applications can react to changes, for instance when a user moves a " "scrollbar, Gtk::Adjustment has a " "value_changed signal. You can then use the " "get_value() method to discover the new value." msgstr "" "Gtk::Adjustment har en value_changed-signal så att program kan reagera på ändringar, exempelvis då en " "användare flyttar en rullningslist. Du kan sedan använda metoden " "get_value() för att få reda på det nya värdet." #. (itstool) path: section/title #: C/index-in.docbook:4311 #, fuzzy msgid "Creating an Adjustment" msgstr "Skapa en Adjustment" #. (itstool) path: section/para #: C/index-in.docbook:4313 #, fuzzy msgid "" "The Gtk::Adjustment is created by its " "create() method which is as follows:" msgstr "" "Denna Gtk::Adjustment skapas av sin " "create()-metod som är som följer:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4318 #, no-wrap msgid "" "Glib::RefPtr<Gtk::Adjustment> Gtk::Adjustment::create(\n" " double value,\n" " double lower,\n" " double upper,\n" " double step_increment = 1,\n" " double page_increment = 10,\n" " double page_size = 0);" msgstr "" "Glib::RefPtr<Gtk::Adjustment> Gtk::Adjustment::create(\n" " double value,\n" " double lower,\n" " double upper,\n" " double step_increment = 1,\n" " double page_increment = 10,\n" " double page_size = 0);" #. (itstool) path: section/para #: C/index-in.docbook:4326 #, fuzzy msgid "" "The value argument is the initial value of the " "adjustment, usually corresponding to the topmost or leftmost position of an " "adjustable widget. The lower and upper arguments specify the possible range of values which the " "adjustment can hold. The step_increment argument " "specifies the smaller of the two increments by which the user can change the " "value, while the page_increment is the larger one. " "The page_size argument usually corresponds somehow to " "the visible area of a panning widget. The upper " "argument is used to represent the bottommost or rightmost coordinate in a " "panning widget's child." msgstr "" "Argumentet value är justeringens ursprungliga värde, " "vanligen motsvarande positionen överst eller längst till vänster för en " "justerbar komponent. Argumenten lower och " "upper anger det möjliga värdeintervallet som " "justeringen kan hålla. Argumentet step_increment " "anger den mindre av de två ökningar som användaren kan ändra värdet med, " "medan page_increment är den större. Argumentet " "page_size motsvarar vanligen på något vis det synliga " "området för en panoreringskomponent. Argumentet upper " "används för att representera koordinaten längst ner eller till höger i en " "panoreringskomponents underordnade." #. (itstool) path: section/title #: C/index-in.docbook:4345 #, fuzzy msgid "Using Adjustments the Easy Way" msgstr "Det enkla sättet att använda justeringar" #. (itstool) path: section/para #: C/index-in.docbook:4347 #, fuzzy msgid "" "The adjustable widgets can be roughly divided into those which use and " "require specific units for these values, and those which treat them as " "arbitrary numbers." msgstr "" "De justerbara komponenterna kan i stort delas upp i de som använder och " "kräver specifika enheter för dessa värden, och de som behandlar dem som " "godtyckliga tal." #. (itstool) path: section/para #: C/index-in.docbook:4352 #, fuzzy msgid "" "The group which treats the values as arbitrary numbers includes the " "Range widgets (Scrollbar and " "Scale), the ScaleButton " "widget, and the SpinButton widget. These widgets are " "typically \"adjusted\" directly by the user with the mouse or keyboard. They " "will treat the lower and upper " "values of an adjustment as a range within which the user can manipulate the " "adjustment's value. By default, they will only modify " "the value of an adjustment." msgstr "" "Gruppen som behandlar värdena som godtyckliga tal inkluderar " "Range-komponenterna (Scrollbar " "och Scale), ScaleButton-" "komponenten och SpinButton-komponenten. Dessa " "komponenter ”justeras” typiskt av användaren med musen eller tangentbordet. " "De kommer behandla lower- och upper-värdena för en justering som ett intervall som användaren kan " "manipulera justeringens value inom. Som standard " "kommer de endast ändra value för en justering." #. (itstool) path: section/para #: C/index-in.docbook:4364 #, fuzzy msgid "" "The other group includes the Viewport widget and the " "ScrolledWindow widget. All of these widgets use pixel " "values for their adjustments. These are also typically adjusted indirectly " "using scrollbars. While all widgets which use adjustments can either create " "their own adjustments or use ones you supply, you'll generally want to let " "this particular category of widgets create its own adjustments." msgstr "" "Den andra gruppen inkluderar Viewport-komponenten och " "ScrolledWindow-komponenten. Alla dessa komponenter " "använder bildpunktsvärden för sina justeringar. Dessa justeras också typiskt " "indirekt med rullningslister. Medan alla komponenter som använder " "justeringar antingen kan skapa sina egna justeringar eller använda sådana " "som du tillhandahåller, så kommer du allmänt vilja låta denna specifika " "kategori komponenter skapa sina egna justeringar." #. (itstool) path: section/para #: C/index-in.docbook:4373 #, fuzzy msgid "" "If you share an adjustment object between a Scrollbar and a TextView widget, " "manipulating the scrollbar will automagically adjust the TextView widget. " "You can set it up like this:" msgstr "" "Om du delar ett justeringsobjekt mellan en Scrollbar- och en TextView-" "komponent, kommer att manipulera rullningslisten automagiskt justera " "TextView-komponenten. Du kan konfigurera det så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4378 #, fuzzy, no-wrap msgid "" "// creates its own adjustments\n" "Gtk::TextView textview;\n" "// uses the newly-created adjustment for the scrollbar as well\n" "Gtk::Scrollbar vscrollbar(textview.get_vadjustment(), Gtk::Orientation::VERTICAL);" msgstr "" "// skapar sina egna justeringar\n" "Gtk::TextView textview;\n" "// använder den nyss skapade justeringen även för rullningslisten\n" "Gtk::Scrollbar vscrollbar(textview.get_vadjustment(), Gtk::Orientation::VERTICAL);" #. (itstool) path: section/title #: C/index-in.docbook:4386 #, fuzzy msgid "Adjustment Internals" msgstr "Inre delarna av Adjustment" #. (itstool) path: section/para #: C/index-in.docbook:4388 msgid "" "OK, you say, that's nice, but what if I want to create my own handlers to " "respond when the user adjusts a Range widget or a " "SpinButton. To access the value of a Gtk::" "Adjustment, you can use the get_value() " "and set_value() methods:" msgstr "" "OK, då säger du att det var väl fint, men om jag vill skapa mina egna " "hanterare för att svara när användaren justerar en Range-komponent eller en SpinButton då? För att " "komma åt värdet på en Gtk::Adjustment kan du använda " "metoderna get_value() och set_value():" #. (itstool) path: section/para #: C/index-in.docbook:4396 #, fuzzy msgid "" "As mentioned earlier, Gtk::Adjustment can emit " "signals. This is, of course, how updates happen automatically when you share " "an Adjustment object between a Scrollbar and another adjustable widget; all adjustable widgets connect " "signal handlers to their adjustment's value_changed " "signal, as can your program." msgstr "" "Som nämnts tidigare kan Gtk::Adjustment sända ut " "signaler. Detta är förstås hur uppdateringar sker automatiskt när du delar " "ett Adjustment-objekt mellan en Scrollbar och en annan justerbar komponent; alla justerbara komponenter " "ansluter signalhanterare till sin justerings value_changed-signal, och det kan även ditt program." #. (itstool) path: section/para #: C/index-in.docbook:4405 #, fuzzy msgid "" "So, for example, if you have a Scale widget, and you " "want to change the rotation of a picture whenever its value changes, you " "would create a signal handler like this:" msgstr "" "Så om du exempelvis har en Scale-komponent och vill " "ändra rotationen för en bild närhelst dess värde ändras så skulle du skapa " "en signalhanterare så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4410 #, fuzzy, no-wrap msgid "" "void cb_rotate_picture(MyPicture* picture)\n" "{\n" " picture->set_rotation(adj->get_value());\n" "..." msgstr "" "void cb_rotate_picture(MyPicture* picture)\n" "{\n" " picture->set_rotation(adj->get_value());\n" "..." #. (itstool) path: section/para #: C/index-in.docbook:4414 #, fuzzy msgid "and connect it to the scale widget's adjustment like this:" msgstr "och ansluta den till skalkomponentens justering så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:4417 #, fuzzy, no-wrap msgid "" "adj->signal_value_changed().connect(sigc::bind<MyPicture*>(sigc::mem_fun(*this,\n" " &cb_rotate_picture), picture));" msgstr "" "adj->signal_value_changed().connect(sigc::bind<MyPicture*>(sigc::mem_fun(*this,\n" " &cb_rotate_picture), picture));" #. (itstool) path: section/para #: C/index-in.docbook:4420 #, fuzzy msgid "" "What if a widget reconfigures the upper or " "lower fields of its Adjustment, such as when a user adds more text to a text widget? In this " "case, it emits the changed signal." msgstr "" "Men om en komponent konfigurerar om fälten upper " "eller lower för sin Adjustment, som när en användare lägger till mer text till en textkomponent? " "I detta fall sänder den ut signalen changed." #. (itstool) path: section/para #: C/index-in.docbook:4427 #, fuzzy msgid "" "Range widgets typically connect a handler to this " "signal, which changes their appearance to reflect the change - for example, " "the size of the slider in a scrollbar will grow or shrink in inverse " "proportion to the difference between the lower and " "upper values of its Adjustment." msgstr "" "Range-komponenter ansluter typiskt en hanterare till " "denna signal, vilket ändrar deras utseende för att reflektera ändringen - " "exempelvis kommer storleken på skjutreglaget i en rullningslist växa eller " "krympa i invers proportion till skillnaden mellan lower- och upper-värdena för dess " "Adjustment." #. (itstool) path: section/para #: C/index-in.docbook:4436 #, fuzzy msgid "" "You probably won't ever need to attach a handler to this signal, unless " "you're writing a new type of range widget." msgstr "" "Du kommer troligen aldrig behöva fästa en hanterare till denna signal, om du " "inte skriver en ny typ av intervallkomponent." #. (itstool) path: section/programlisting #: C/index-in.docbook:4440 #, fuzzy, no-wrap msgid "adjustment->signal_changed();" msgstr "adjustment->signal_changed();" #. (itstool) path: chapter/title #: C/index-in.docbook:4447 msgid "Dialogs" msgstr "Dialogrutor" #. (itstool) path: note/para #: C/index-in.docbook:4449 msgid "" "Gtk::Dialog and the classes derived from it, are " "deprecated since gtkmm 4.10. They can still be " "used in gtkmm4 applications, provided " "GTKMM_DISABLE_DEPRECATED and GDKMM_DISABLE_DEPRECATED are not defined. Some " "of the dialog classes are replaced by classes that are available since " "gtkmm 4.10." msgstr "" #. (itstool) path: note/para #: C/index-in.docbook:4454 msgid "" "The examples in this chapter use classes that are available since " "gtkmm 4.10. Similar examples with the deprecated " "classes are available in the gtkmm-4-0 " "branch in the git repository." msgstr "" #. (itstool) path: chapter/para #: C/index-in.docbook:4460 #, fuzzy msgid "" "Dialogs are used as secondary windows, to provide specific information or to " "ask questions. Gtk::Dialog windows contain a few pre-" "packed widgets to ensure consistency, and a response " "signal which is emitted when the user dismisses the dialog." msgstr "" "Dialogrutor används som sekundära fönster för att tillhandahålla specifik " "information eller ställa frågor. Gtk::Dialog-fönster " "innehåller några i förväg packade komponenter för att säkerställa " "konsekvens, och en response-signal som sänds ut när " "användaren klickar bort dialogrutan." #. (itstool) path: chapter/para #: C/index-in.docbook:4467 msgid "" "There are several derived Dialog classes which you " "might find useful. Gtk::MessageDialog is used for " "most simple notifications. But at other times you might need to derive your " "own dialog class to provide more complex functionality." msgstr "" "Det finns flera härledda Dialog-klasser som du kan " "finna användbara. Gtk::MessageDialog används för de " "enklaste aviseringarna. Men andra gånger kan du behöva härleda din egen " "dialogklass för att tillhandahålla mer komplex funktionalitet." #. (itstool) path: chapter/para #: C/index-in.docbook:4474 #, fuzzy msgid "" "To pack widgets into a custom dialog, you should pack them into the " "Gtk::Box, available via " "get_content_area(). To just add a " "Button to the bottom of the Dialog, you could use the add_button() method." msgstr "" "För att packa komponenter i en anpassad dialogruta bör du packa dem i " "Gtk::Boxen, tillgänglig via " "get_content_area(). För att bara lägga till en " "Button längst ner i Dialogen " "kan du använda metoden add_button()." #. (itstool) path: chapter/para #: C/index-in.docbook:4482 #, fuzzy msgid "" "The response signal handler receives an int. This may be a value from the Gtk::ResponseType if the " "user closed the dialog by clicking a standard button, or it could be the " "custom response value that you specified when using " "add_button()." msgstr "" "response-signalhanteraren tar emot en int. Detta kan vara ett värde från Gtk::ResponseType om " "användaren stängt dialogrutan genom att klicka på en standardknapp, eller så " "kunde det vara det anpassade svarsvärdet som du angivit när du använt " "add_button()." #. (itstool) path: chapter/para #: C/index-in.docbook:4489 #, fuzzy msgid "" "To show the dialog, call set_visible(true). If the " "same dialog instance will be shown several times, you must also call " "set_hide_on_close(), or else the dialog will be " "destroyed when it's closed. Connect to the response " "signal, if you want to know which button was pressed. The response signal handler is also where you should hide the dialog." msgstr "" "För att visa dialogrutan, anropa show(). Om samma " "dialoginstans kommer visas flera gånger måste du också anropa " "set_hide_on_close(), annars kommer dialogrutan " "förstöras då den stängs. Anslut till response-signalen om " "du vill veta vilken knapp som trycktes på. response-" "signalhanteraren är också var du ska dölja dialogrutan." #. (itstool) path: chapter/para #: C/index-in.docbook:4498 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:4501 #, fuzzy #| msgid "MessageDialog" msgid "AlertDialog and MessageDialog" msgstr "MessageDialog" #. (itstool) path: section/para #: C/index-in.docbook:4502 msgid "" "MessageDialog (deprecated since gtkmm 4.10) and AlertDialog (available since " "gtkmm 4.10) are convenience classes, used to " "create simple, standard message dialogs, with a message and buttons for user " "response." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:4509 #, fuzzy #| msgid "" #| "Reference" msgid "" "AlertDialog Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:4510 #, fuzzy #| msgid "" #| "Reference" msgid "" "MessageDialog Reference" msgstr "" "Referens" #. (itstool) path: figure/title #: C/index-in.docbook:4516 #, fuzzy #| msgid "AboutDialog" msgid "AlertDialog" msgstr "AboutDialog" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4518 #, fuzzy msgctxt "_" msgid "" "external ref='figures/dialogs_alertdialog.png' " "md5='88fa2103ad6d842eeebc68cc8cfd94ef'" msgstr "" "external ref='figures/dialogs_messagedialog.png' " "md5='58151003c2b562b9f27b064c3193f7b1'" #. (itstool) path: section/para #: C/index-in.docbook:4522 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4527 #, fuzzy #| msgid "FileChooserDialog" msgid "FileDialog and FileChooserDialog" msgstr "FileChooserDialog" #. (itstool) path: section/para #: C/index-in.docbook:4528 msgid "" "The FileChooserDialog (deprecated since " "gtkmm 4.10) and FileDialog " "(available since gtkmm 4.10) are suitable for use " "with \"Open\" or \"Save\" menu items." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:4533 #, fuzzy #| msgid "" #| "Most of the useful member methods for this class are actually in the " #| "Gtk::FileChooser base class." msgid "" "Most of the useful member methods for FileChooserDialog are actually in the Gtk::FileChooser base " "class." msgstr "" "De flesta av de användbara medlemsmetoderna för denna klass är faktiskt i " "basklassen Gtk::FileChooser." #. (itstool) path: section/para #: C/index-in.docbook:4538 #, fuzzy #| msgid "" #| "Reference" msgid "" "FileDialog Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:4539 #, fuzzy #| msgid "" #| "Reference" msgid "" "FileChooserDialog Reference" msgstr "" "Referens" #. (itstool) path: figure/title #: C/index-in.docbook:4545 #, fuzzy #| msgid "FileChooserDialog" msgid "FileDialog" msgstr "FileChooserDialog" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4547 #, fuzzy msgctxt "_" msgid "" "external ref='figures/dialogs_filedialog.png' " "md5='15ecc452482112428259d0dcd8d0394a'" msgstr "" "external ref='figures/dialogs_filechooser.png' " "md5='15ecc452482112428259d0dcd8d0394a'" #. (itstool) path: section/para #: C/index-in.docbook:4551 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4556 #, fuzzy #| msgid "ColorChooserDialog" msgid "ColorDialog and ColorChooserDialog" msgstr "ColorChooserDialog" #. (itstool) path: section/para #: C/index-in.docbook:4557 msgid "" "The ColorChooserDialog (deprecated since " "gtkmm 4.10) and ColorDialog (available since gtkmm 4.10) allow the " "user to choose a color. The ColorButton (deprecated " "since gtkmm 4.10) and " "ColorDialogButton (available since " "gtkmm 4.10) open a color selection dialog when it " "is clicked." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:4565 #, fuzzy #| msgid "" #| "Reference" msgid "" "ColorDialog Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:4566 #, fuzzy #| msgid "" #| "Reference" msgid "" "ColorChooserDialog Reference" msgstr "" "Referens" #. (itstool) path: figure/title #: C/index-in.docbook:4572 #, fuzzy #| msgid "ColorChooserDialog" msgid "ColorDialog" msgstr "ColorChooserDialog" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4574 #, fuzzy msgctxt "_" msgid "" "external ref='figures/dialogs_colordialog.png' " "md5='029761e82cf06d3cbeaac2b7ccd70e57'" msgstr "" "external ref='figures/dialogs_colorchooserdialog.png' " "md5='029761e82cf06d3cbeaac2b7ccd70e57'" #. (itstool) path: section/para #: C/index-in.docbook:4578 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4583 #, fuzzy #| msgid "FontChooserDialog" msgid "FontDialog and FontChooserDialog" msgstr "FontChooserDialog" #. (itstool) path: section/para #: C/index-in.docbook:4584 msgid "" "The FontChooserDialog (deprecated since " "gtkmm 4.10) and FontDialog " "(available since gtkmm 4.10) allow the user to " "choose a font. The FontButton (deprecated since " "gtkmm 4.10) and FontDialogButton (available since gtkmm 4.10) open a " "font chooser dialog when it is clicked." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:4592 #, fuzzy #| msgid "" #| "Reference" msgid "" "FontDialog Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:4593 #, fuzzy #| msgid "" #| "Reference" msgid "" "FontChooserDialog Reference" msgstr "" "Referens" #. (itstool) path: figure/title #: C/index-in.docbook:4599 #, fuzzy #| msgid "AboutDialog" msgid "FontDialog" msgstr "AboutDialog" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4601 #, fuzzy msgctxt "_" msgid "" "external ref='figures/dialogs_fontdialog.png' " "md5='e35e05429468fa8823416b8a0deff342'" msgstr "" "external ref='figures/dialogs_fontchooserdialog.png' " "md5='e35e05429468fa8823416b8a0deff342'" #. (itstool) path: section/para #: C/index-in.docbook:4605 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4610 #, fuzzy msgid "Non-modal AboutDialog" msgstr "Ej modal AboutDialog" #. (itstool) path: section/para #: C/index-in.docbook:4611 msgid "" "The AboutDialog offers a simple way to display " "information about a program, like its logo, name, copyright, website and " "license." msgstr "" "AboutDialog erbjuder ett lätt sätt att visa " "information om ett program, som dess logotyp, namn, upphovsrätt, webbplats " "och licens." #. (itstool) path: section/para #: C/index-in.docbook:4615 #, fuzzy msgid "" "Most dialogs in this chapter are modal, that is, they freeze the rest of the " "application while they are shown. It's also possible to create a non-modal " "dialog, which does not freeze other windows in the application. The " "following example shows a non-modal AboutDialog. This " "is perhaps not the kind of dialog you would normally make non-modal, but non-" "modal dialogs can be useful in other cases. E.g. gedit's search-and-replace dialog is non-modal." msgstr "" "De flesta dialogrutorna i detta kapitel är modala, det vill säga att de " "fryser resten av programmet medan de visas. Det är också möjligt att skapa " "en icke-modal dialogruta som inte fryser andra fönster i programmet. " "Följande exempel visar en AboutDialog som inte är " "modal. Detta är kanske inte dialogsorten som du skulle göra icke-modal, men " "icke-modala dialogrutor kan vara användbara i andra fall. Exempelvis är " "gedits sök-och-ersättdialog icke-modal." #. (itstool) path: section/para #: C/index-in.docbook:4625 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: figure/title #: C/index-in.docbook:4631 msgid "AboutDialog" msgstr "AboutDialog" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4633 #, fuzzy msgctxt "_" msgid "" "external ref='figures/dialogs_about.png' " "md5='1b70a95ad73fce53bb5a2fbd3df69c5c'" msgstr "" "external ref='figures/dialogs_about.png' " "md5='1b70a95ad73fce53bb5a2fbd3df69c5c'" #. (itstool) path: section/para #: C/index-in.docbook:4637 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4642 #, fuzzy #| msgid "Custom Widget" msgid "Custom Dialog" msgstr "Anpassad komponent" #. (itstool) path: section/para #: C/index-in.docbook:4643 msgid "" "When none of the predefined dialog classes suit your needs, you can make " "your own dialog by deriving a class from Window and " "fill it with the widgets you need." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:4649 #, fuzzy #| msgid "" #| "Widget Reference" msgid "" "Window Reference" msgstr "" "Widget-referens" #. (itstool) path: figure/title #: C/index-in.docbook:4655 #, fuzzy #| msgid "Dialogs" msgid "Window Dialog" msgstr "Dialogrutor" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4657 #, fuzzy msgctxt "_" msgid "" "external ref='figures/dialogs_windowdialog.png' " "md5='53deb18153f6903fe45d015fc06ccef3'" msgstr "" "external ref='figures/dialogs_messagedialog.png' " "md5='58151003c2b562b9f27b064c3193f7b1'" #. (itstool) path: section/para #: C/index-in.docbook:4661 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:4668 msgid "The DrawingArea Widget" msgstr "DrawingArea-komponenten" #. (itstool) path: chapter/para #: C/index-in.docbook:4669 #, fuzzy msgid "" "The DrawingArea widget is a blank window that gives " "you the freedom to create any graphic you desire. Along with that freedom " "comes the responsibility to draw on the widget. When a widget is first " "shown, or when it is covered and then uncovered again it needs to redraw " "itself. Most widgets have code to do this, but the DrawingArea does not, allowing you to write your own draw function to " "determine how the contents of the widget will be drawn. This is done by " "setting a draw function with a call to the set_draw_func() member function." msgstr "" "DrawingArea-komponenten är ett blankt fönster som ger " "dig friheten att skapa vilken grafik du vill. Tillsammans med den friheten " "kommer ansvaret för att rita på komponenten. När en komponent först visas, " "eller när den täcks och sedan tas fram igen behöver den rita om sig själv. " "De flesta komponenter har kod för att göra detta, men " "DrawingArea har inte det, vilket låter skriva din " "egen ritfunktion för att bestämma hur innehållet i komponenten ska ritas. " "Detta görs genom att ställa in en ritfunktion med ett anrop till " "medlemsfunktionen set_draw_func()." #. (itstool) path: chapter/para #: C/index-in.docbook:4681 msgid "" "GTK uses the Cairo " "drawing API. With gtkmm, you may use the cairomm C++ API " "for cairo." msgstr "" "GTK använder Cairos rit-" "API. Med gtkmm kan du använda C++-API:t cairomm för " "cairo." #. (itstool) path: chapter/para #: C/index-in.docbook:4686 #, fuzzy msgid "" "You can draw very sophisticated shapes using Cairo, but the methods to do so " "are quite basic. Cairo provides methods for drawing straight lines, curved " "lines, and arcs (including circles). These basic shapes can be combined to " "create more complex shapes and paths which can be filled with solid colors, " "gradients, patterns, and other things. In addition, Cairo can perform " "complex transformations, do compositing of images, and render antialiased " "text." msgstr "" "Du kan rita väldigt sofistikerade former med Cairo, men metoderna för att " "göra det är ganska rudimentära. Cairo tillhandahåller metoder för att rita " "raka linjer, krökta linjer och bågar (inkluderande cirklar). Dessa " "grundläggande former kan kombineras för att skapa mer komplexa former och " "banor som kan fyllas enfärgat eller med gradienter och många andra saker. " "Dessutom kan Cairo utföra komplexa transformationer och sammansättning av " "bilder, samt rendera kantutjämnad text." #. (itstool) path: note/title #: C/index-in.docbook:4696 msgid "Cairo and Pango" msgstr "Cairo och Pango" #. (itstool) path: note/para #: C/index-in.docbook:4697 msgid "" "Although Cairo can render text, it's not meant to be a replacement for " "Pango. Pango is a better choice if you need to perform more advanced text " "rendering such as wrapping or ellipsizing text. Drawing text with Cairo " "should only be done if the text is part of a graphic." msgstr "" "Även om Cairo kan rendera text så är det inte tänkt som en ersättning för " "Pango. Pango är ett bättre val om du behöver utföra mer avancerad " "textrendering som att radbryta eller elliptisera text. Att rita text med " "Cairo bör bara göras om texten är del av en grafik." #. (itstool) path: chapter/para #: C/index-in.docbook:4702 #, fuzzy msgid "" "In this section of the tutorial, we'll cover the basic Cairo drawing model, " "describe each of the basic drawing elements in some detail (with examples), " "and then present a simple application that uses Cairo to draw a custom clock " "widget." msgstr "" "I detta avsnitt av handledningen kommer vi täcka den grundläggande Cairo-" "ritmodellen, beskriva vart och ett av de grundläggande ritelementet " "någorlunda detaljerat (med exempel), och sedan presentera ett enkelt program " "som använder Cairo för att rita en anpassad klockkomponent." #. (itstool) path: section/title #: C/index-in.docbook:4710 msgid "The Cairo Drawing Model" msgstr "Cairo-ritmodellen" #. (itstool) path: section/para #: C/index-in.docbook:4711 #, fuzzy msgid "" "The basic concept of drawing in Cairo involves defining 'invisible' paths " "and then stroking or filling them to make them visible." msgstr "" "Det grundläggande konceptet för att rita i Cairo involverar att definiera " "”osynliga” banor och sedan strecka eller fylla dem för att göra dem synliga." #. (itstool) path: section/para #: C/index-in.docbook:4715 #, fuzzy msgid "" "To do any drawing in gtkmm with Cairo, you must " "first get a Cairo::Context object. This class holds " "all of the graphics state parameters that describe how drawing is to be " "done. This includes information such as line width, color, the surface to " "draw to, and many other things. This allows the actual drawing functions to " "take fewer arguments to simplify the interface. Usually, you use the " "Cairo::Context that you get as input data to the draw " "function that you set with the call to set_draw_func(). It's also possible to create a Cairo::Context by calling the Gdk::Surface::create_cairo_context() and Gdk::CairoContext::cairo_create() " "functions. Since Cairo contexts are reference-counted objects, " "cairo_create() returns a Cairo::" "RefPtr<Cairo::Context> object. (Note the difference " "between Gdk::CairoContext and Cairo::" "Context.)" msgstr "" "För att rita i gtkmm med Cairo måste du först få " "ett Cairo::Context-objekt. Denna klass innehåller " "alla grafiktillståndsparametrar som beskriver hur utritning görs. Detta " "inkluderar information som linjebredd, färg, ytan att rita till och mycket " "annat. Detta låter de faktiska ritfunktionerna att ta färre argument för att " "förenkla gränssnittet. Vanligen använder du den Cairo::Context som du får som indata till ritfunktionen som du ställer in med " "anropen till set_draw_func(). Det är också möjligt " "att skapa en Cairo::Context genom att anropa " "funktionerna Gdk::Surface::create_cairo_context() " "och Gdk::CairoContext::cairo_create(). Eftersom " "Cairo-kontexter är referensräknade objekt returnerar " "cairo_create() ett Cairo::RefPtr<" "Cairo::Context>-objekt. (Observera skillnaden mellan " "Gdk::CairoContext och Cairo::Context.)" #. (itstool) path: section/para #: C/index-in.docbook:4732 msgid "" "The following example shows how to set up a Cairo context with a foreground " "color of red and a width of 2. Any drawing functions that use this context " "will use these settings." msgstr "" "Följande exempel visar hur du konfigurerar en Cairo-kontext med " "förgrundsfärgen röd och bredden 2. Alla ritfunktioner som använder denna " "kontext kommer använda dessa inställningar." #. (itstool) path: section/programlisting #: C/index-in.docbook:4737 #, no-wrap msgid "" "\n" "Gtk::DrawingArea myArea;\n" "auto gdkCairoContext = myArea.get_surface()->create_cairo_context();\n" "auto myContext = gdkCairoContext->cairo_create();\n" "myContext->set_source_rgb(1.0, 0.0, 0.0);\n" "myContext->set_line_width(2.0);\n" " " msgstr "" "\n" "Gtk::DrawingArea myArea;\n" "auto gdkCairoContext = myArea.get_surface()->create_cairo_context();\n" "auto myContext = gdkCairoContext->cairo_create();\n" "myContext->set_source_rgb(1.0, 0.0, 0.0);\n" "myContext->set_line_width(2.0);\n" " " #. (itstool) path: section/para #: C/index-in.docbook:4744 #, fuzzy msgid "" "Each Cairo::Context is associated with a particular " "Gdk::Surface, so the first line of the above example " "creates a Gtk::DrawingArea widget and the next two " "lines use its associated Gdk::Surface to create a " "Cairo::Context object. The final two lines change the " "graphics state of the context." msgstr "" "Varje Cairo::Context associeras med en viss " "Gdk::Surface, så den första raden i exemplet ovan " "skapar en Gtk::DrawingArea-komponent och de två " "raderna efter använder dess associerade Gdk::Surface " "för att skapa ett Cairo::Context-objekt. De sista två " "radera ändrar kontextens grafiktillstånd." #. (itstool) path: section/para #: C/index-in.docbook:4752 msgid "" "There are a number of graphics state variables that can be set for a Cairo " "context. The most common context attributes are color (using " "set_source_rgb() or set_source_rgba() for translucent colors), line width (using " "set_line_width()), line dash pattern (using " "set_dash()), line cap style (using " "set_line_cap()), and line join style (using " "set_line_join()), and font styles (using " "set_font_size(), set_font_face() and others). There are many other settings as well, such as " "transformation matrices, fill rules, whether to perform antialiasing, and " "others. For further information, see the cairomm API documentation." msgstr "" "Det finns ett antal grafiktillståndsvariabler som kan ställas in för en " "Cairo-kontext. De vanligaste kontextattributen är färg (med " "set_source_rgb() eller " "set_source_rgba() för genomskinliga färger), " "linjebredd (med set_line_width()), " "linjestreckningsmönster (med set_dash()), stil på " "linjeände (med set_line_cap()), " "linjesammankopplingsstil (med set_line_join()) och " "typsnittsstilar (med set_font_size(), " "set_font_face() med flera). Det finns även många " "andra inställningar, såsom transformationsmatriser, fyllnadsregler, huruvida " "kantutjämning ska utföras med mera. För vidare information kan du se API-" "dokumentationen för cairomm." #. (itstool) path: tip/para #: C/index-in.docbook:4784 msgid "" "It is good practice to put all modifications to the graphics state between " "save()/restore() function " "calls. For example, if you have a function that takes a Cairo::" "Context reference as an argument, you might implement it as " "follows:" msgstr "" "Det är god sed att stoppa alla ändringar till grafiktillståndet mellan " "save()/restore()-" "funktionsanrop. Om du exempelvis har en funktion som tar en " "Cairo::Context-referens som ett argument kanske du " "implementerar den enligt följande:" #. (itstool) path: tip/programlisting #: C/index-in.docbook:4790 #, no-wrap msgid "" "void doSomething(const Cairo::RefPtr<Cairo::Context>& context, int x)\n" "{\n" " context->save();\n" " // change graphics state\n" " // perform drawing operations\n" " context->restore();\n" "}" msgstr "" "void doSomething(const Cairo::RefPtr<Cairo::Context>& context, int x)\n" "{\n" " context->save();\n" " // ändra grafiktillstånd\n" " // utför ritoperationer\n" " context->restore();\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:4767 #, fuzzy msgid "" "The current state of a Cairo::Context can be saved to " "an internal stack of saved states and later be restored to the state it was " "in when you saved it. To do this, use the save() " "method and the restore() method. This can be useful " "if you need to temporarily change the line width and color (or any other " "graphics setting) in order to draw something and then return to the previous " "settings. In this situation, you could call Cairo::Context::" "save(), change the graphics settings, draw the lines, and then " "call Cairo::Context::restore() to restore the " "original graphics state. Multiple calls to save() " "and restore() can be nested; each call to " "restore() restores the state from the matching " "paired save(). <_:tip-1/>" msgstr "" "Aktuellt tillstånd för en Cairo::Context kan sparas " "till en intern stack med sparade tillstånd och sedan återställas till " "tillståndet den var i när du sparade den. För att göra detta använder du " "metoderna save() och restore(). Detta kan vara användbart om du tillfälligt behöver ändra " "linjebredden och färgen (eller någon annan grafikinställning) för att rita " "något och sedan återgå till de tidigare inställningarna. I denna situation " "bör du anropa Cairo::Context::save(), ändra " "grafikinställningarna, rita linjerna, och sedan anropa Cairo::" "Context::restore() för att återställa det ursprungliga " "grafiktillståndet. Flera anrop till save() och " "restore() kan nästas; varje anrop till " "restore() återställer tillståndet från den " "matchande save() i paret. <_:tip-1/>" #. (itstool) path: section/para #: C/index-in.docbook:4799 msgid "" "The draw function that you set with a call to set_draw_func() is called with a Cairo context that you shall use for drawing in " "the Gtk::DrawingArea widget. It is not necessary to " "save and restore this Cairo context in the draw function." msgstr "" "Ritfunktionen som du ställer in med ett anrop till " "set_draw_func() anropas med en Cairo-kontext som du " "ska använda för att rita i Gtk::DrawingArea-" "komponenten. Det är inte nödvändigt att spara och återställa denna Cairo-" "kontext i ritfunktionen." #. (itstool) path: section/title #: C/index-in.docbook:4807 msgid "Drawing Straight Lines" msgstr "Rita raka linjer" #. (itstool) path: tip/para #: C/index-in.docbook:4816 #, fuzzy msgid "" "Since the Cairo graphics library was written with support for multiple " "output targets (the X window system, PNG images, OpenGL, etc), there is a " "distinction between user-space and device-space coordinates. The mapping " "between these two coordinate systems defaults to one-to-one so that integer " "values map roughly to pixels on the screen, but this setting can be adjusted " "if desired. Sometimes it may be useful to scale the coordinates so that the " "full width and height of a window both range from 0 to 1 (the 'unit square') " "or some other mapping that works for your application. This can be done with " "the Cairo::Context::scale() function." msgstr "" "Eftersom Cairo-grafikbiblioteket skrivits med stöd för flera utmatningsmål " "(X-fönstersystemet, PNG-bilder, OpenGL o.s.v.), så görs skillnad mellan " "koordinater i användar- och enhetsrymden. Mappningen mellan dessa två " "koordinatsystem är som standard ett-till-ett så att heltalsvärden grovt " "motsvarar bildpunkter på skärmen, men denna inställning kan justeras om så " "önskas. Ibland kan det vara användbart att skala koordinaterna så att hela " "bredden och höjden för ett fönster båda har intervallet 0 till 1 " "(”enhetskvadraten”) eller någon annan mappning som fungerar för ditt " "program. Detta kan göras med funktionen Cairo::Context::scale()." #. (itstool) path: section/para #: C/index-in.docbook:4808 msgid "" "Now that we understand the basics of the Cairo graphics library, we're " "almost ready to start drawing. We'll start with the simplest of drawing " "elements: the straight line. But first you need to know a little bit about " "Cairo's coordinate system. The origin of the Cairo coordinate system is " "located in the upper-left corner of the window with positive x values to the " "right and positive y values going down. <_:tip-1/>" msgstr "" "Nu då vi förstå grunderna hos Cairo-grafikbiblioteket är vi nästan klara att " "börja rita. Vi börjar med det enklaste av ritelement: den raka linjen. Men " "först behöver du känna till lite om Cairos koordinatsystem. Origo för Cairos " "koordinatsystem finns i fönstrets övre vänstra hörn med positiva x-värden " "till höger och positiva y-värden nedåt. <_:tip-1/>" #. (itstool) path: section/para #: C/index-in.docbook:4832 #, fuzzy msgid "" "In this example, we'll construct a small but fully functional " "gtkmm program and draw some lines into the " "window. The lines are drawn by creating a path and then stroking it. A path " "is created using the functions Cairo::Context::move_to() and Cairo::Context::line_to(). The " "function move_to() is similar to the act of lifting " "your pen off of the paper and placing it somewhere else -- no line is drawn " "between the point you were at and the point you moved to. To draw a line " "between two points, use the line_to() function." msgstr "" "I detta exempel kommer vi konstruera ett litet men fullt fungerande " "gtkmm-program och rita några linjer i fönstret. " "Linjerna ritas genom att skapa en bana och sedan stryka längs den. En bana " "skapas med funktionerna Cairo::Context::move_to() " "och Cairo::Context::line_to(). Funktionen " "move_to() liknar att lyfta din penna från papperet " "och placera den någon annanstans -- ingen linje ritas mellan punkten du var " "på och punkten du flyttade till. För att rita en linje mellan två punkter " "använder du funktionen line_to()." #. (itstool) path: section/para #: C/index-in.docbook:4844 #, fuzzy msgid "" "After you've finished creating your path, you still haven't drawn anything " "visible yet. To make the path visible, you must use the function " "stroke() which will stroke the current path with " "the line width and style specified in your Cairo::Context object. After stroking, the current path will be cleared so that " "you can start on your next path." msgstr "" "Efter att du slutat skapa din bana har du fortfarande inte ritat något som " "är synligt. För att göra banan synlig måste du använda funktionen " "stroke() som kommer stryka den aktuella banan med " "linjebredden och stilen som angivits i ditt Cairo::Context-objekt. Efter att hu strukit kommer den aktuella banan rensas så " "du kan börja på din nästa bana." #. (itstool) path: tip/para #: C/index-in.docbook:4853 #, fuzzy msgid "" "Many Cairo drawing functions have a _preserve() " "variant. Normally drawing functions such as clip(), " "fill(), or stroke() will " "clear the current path. If you use the _preserve() " "variant, the current path will be retained so that you can use the same path " "with the next drawing function." msgstr "" "Många Cairo-ritfunktioner har en _preserve()-" "variant. Vanligen kommer ritfunktioner som clip(), " "fill() eller stroke() " "rensa den aktuella banan. Om du använder _preserve()-varianten kommer den aktuella banan bevaras så du kan använda " "samma bana med nästa ritfunktion." #. (itstool) path: figure/title #: C/index-in.docbook:4863 C/index-in.docbook:4986 msgid "Drawing Area - Lines" msgstr "Rityta - Linjer" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4865 msgctxt "_" msgid "" "external ref='figures/drawingarea_lines.png' " "md5='3e205f8303890e4eb2ea88487e8633e7'" msgstr "" "external ref='figures/drawingarea_lines.png' " "md5='3e205f8303890e4eb2ea88487e8633e7'" #. (itstool) path: section/para #: C/index-in.docbook:4869 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:4871 #, fuzzy msgid "" "This program contains a single class, MyArea, which " "is a subclass of Gtk::DrawingArea and contains an " "on_draw() member function. This function becomes " "the draw function by a call to set_draw_func() in " "MyArea's constructor. on_draw() is then called whenever the image in the drawing area needs to " "be redrawn. It is passed a Cairo::RefPtr pointer to a " "Cairo::Context that we use for the drawing. The " "actual drawing code sets the color we want to use for drawing by using " "set_source_rgb() which takes arguments defining the " "Red, Green, and Blue components of the desired color (valid values are " "between 0 and 1). After setting the color, we created a new path using the " "functions move_to() and line_to(), and then stroked this path with stroke()." msgstr "" "Detta program innehåller en ensam klass, MyArea, som " "är en underklass till Gtk::DrawingArea och innehåller " "en on_draw()-medlemsfunktion. Denna funktion blir " "ritfunktionen av ett anrop till set_draw_func() i " "MyAreas konstruktor. on_draw() anropas sedan närhelst bilden i ritytan behöver ritas om. Den " "skickas en Cairo::RefPtr-pekare till en " "Cairo::Context som vi använder för ritandet. Koden " "som faktiskt ritar ställer in färgen vi vill använda för ritandet genom att " "använda set_source_rgb() vilken tar argument som " "definierar komponenterna Red, Green, and Blue för den önskade färgen " "(giltiga värden är mellan 0 och 1). Efter att färgen ställts in skapade vi " "en ny bana med funktionerna move_to() och " "line_to(), och strök sedan denna bana med " "stroke()." #. (itstool) path: tip/title #: C/index-in.docbook:4890 msgid "Drawing with relative coordinates" msgstr "Rita med relativa koordinater" #. (itstool) path: tip/para #: C/index-in.docbook:4891 msgid "" "In the example above we drew everything using absolute coordinates. You can " "also draw using relative coordinates. For a straight line, this is done with " "the function Cairo::Context::rel_line_to()." msgstr "" "I exemplet ovan ritade vi allt med absoluta koordinater. Du kan också rita " "med relativa koordinater. För en rak linje görs detta med funktionen " "Cairo::Context::rel_line_to()." #. (itstool) path: section/title #: C/index-in.docbook:4898 msgid "Line styles" msgstr "Linjestilar" #. (itstool) path: section/para #: C/index-in.docbook:4899 msgid "" "In addition to drawing basic straight lines, there are a number of things " "that you can customize about a line. You've already seen examples of setting " "a line's color and width, but there are others as well." msgstr "" "Utöver att rita enkla raka linjer så finns det ett antal saker som du kan " "anpassa med en linje. Du har redan sett exempel på att ställa in en linjes " "färg och bredd, men det finns även annat." # TODO: are show*n* #. (itstool) path: section/para #: C/index-in.docbook:4905 #, fuzzy msgid "" "If you've drawn a series of lines that form a path, you may want them to " "join together in a certain way. Cairo offers three different ways to join " "lines together: Miter, Bevel, and Round. These are show below:" msgstr "" "Om du ritar en serie linjer som formar en bana så kan du vilja koppla samman " "dem på ett visst sätt. Cairo erbjuder tre olika sätt att koppla samman " "linjer: Miter, Bevel, och Round. Dessa visas nedan:" #. (itstool) path: figure/title #: C/index-in.docbook:4912 msgid "Different join types in Cairo" msgstr "Olika sammankopplingstyper i Cairo" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4914 msgctxt "_" msgid "" "external ref='figures/cairo_joins.png' md5='1b1e2a28e976039f1e4a0aa523ac40fb'" msgstr "" "external ref='figures/cairo_joins.png' md5='1b1e2a28e976039f1e4a0aa523ac40fb'" #. (itstool) path: section/para #: C/index-in.docbook:4917 msgid "" "The line join style is set using the function Cairo::Context::" "set_line_join()." msgstr "" "Linjesammankopplingsstilen ställs in med funktionen Cairo::" "Context::set_line_join()." #. (itstool) path: section/para #: C/index-in.docbook:4921 #, fuzzy msgid "" "Line ends can have different styles as well. The default style is for the " "line to start and stop exactly at the destination points of the line. This " "is called a Butt cap. The other options are Round (uses a round ending, with " "the center of the circle at the end point) or Square (uses a squared ending, " "with the center of the square at the end point). This setting is set using " "the function Cairo::Context::set_line_cap()." msgstr "" "Linjeslut kan också ha olika stilar. Standardstilen är att linjen börjar och " "slutar exakt på linjens målpunkter. Detta kallas en Butt cap. De andra " "alternativen är Round (använder en rund ände, med cirkelns centrum på " "ändpunkten) eller Square (använder en kvadratisk ände, med kvadratens " "centrum på ändpunkten). Denna inställning sätts med funktionen " "Cairo::Context::set_line_cap()." #. (itstool) path: section/para #: C/index-in.docbook:4931 #, fuzzy msgid "" "There are other things you can customize as well, including creating dashed " "lines and other things. For more information, see the Cairo API " "documentation." msgstr "" "Det finns även andra saker du kan anpassa, som att skapa och andra saker. Se " "Cairos API-dokumentation för mer information." #. (itstool) path: section/title #: C/index-in.docbook:4939 msgid "Drawing thin lines" msgstr "Rita tunna linjer" #. (itstool) path: section/para #: C/index-in.docbook:4940 #, fuzzy msgid "" "If you try to draw one pixel wide lines, you may notice that the line " "sometimes comes up blurred and wider than it ought to be. This happens " "because Cairo will try to draw from the selected position, to both sides " "(half to each), so if you're positioned right on the intersection of the " "pixels, and want a one pixel wide line, Cairo will try to use half of each " "adjacent pixel, which isn't possible (a pixel is the smallest unit " "possible). This happens when the width of the line is an odd number of " "pixels (not just one pixel)." msgstr "" "Om du försöker rita en bildpunkt breda linjer kan du upptäcka att linjen " "ibland blir suddig och bredare än den borde vara. Detta inträffar för att " "Cairo kommer försöka rita från den valda positionen, till båda sidor " "(hälften till båda), så om du är positionerad till höger om bildpunkternas " "mötespunkt, och vill ha en en bildpunkt bred linje, så kommer Cairo försöka " "använda hälften av varje angränsande bildpunkt, vilket inte är möjligt (en " "bildpunkt är den minsta möjliga enheten). Detta händer när bredden på linjen " "är ett udda antal bildpunkter (inte bara vid en bildpunkt)." #. (itstool) path: section/para #: C/index-in.docbook:4950 #, fuzzy msgid "" "The trick is to position in the middle of the pixel where you want the line " "to be drawn, and thus guaranteeing you get the desired results. See Cairo FAQ." msgstr "" "Tricket är att positionera dig i mitten av bildpunkten där du vill att " "linjen ska dras, och därmed garantera att du får de önskade resultaten. Se " "frågor och " "svar om Cairo." #. (itstool) path: figure/title #: C/index-in.docbook:4957 msgid "Drawing Area - Thin Lines" msgstr "Rityta - Tunna linjer" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4959 #, fuzzy msgctxt "_" msgid "" "external ref='figures/drawingarea_thin_lines.png' " "md5='589cbad88ee60c46503e89c4318822a1'" msgstr "" "external ref='figures/drawingarea_thin_lines.png' " "md5='589cbad88ee60c46503e89c4318822a1'" #. (itstool) path: section/para #: C/index-in.docbook:4963 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:4968 #, fuzzy msgid "Drawing Curved Lines" msgstr "Rita krökta linjer" #. (itstool) path: section/para #: C/index-in.docbook:4969 #, fuzzy msgid "" "In addition to drawing straight lines Cairo allows you to easily draw curved " "lines (technically a cubic Bézier spline) using the Cairo::" "Context::curve_to() and Cairo::Context::" "rel_curve_to() functions. These functions take coordinates for " "a destination point as well as coordinates for two 'control' points. This is " "best explained using an example, so let's dive in." msgstr "" "Utöver att rita raka linjer låter Cairo dig lätt rita krökta linjer " "(tekniskt sett en kubisk Bézier-spline) med funktionerna Cairo::" "Context::curve_to() och Cairo::Context::" "rel_curve_to(). Dessa funktioner tar koordinater för en " "målpunkt såväl som koordinater för två ”kontroll”-punkter. Detta förklaras " "bäst med ett exempel, så nu kör vi." #. (itstool) path: section/para #: C/index-in.docbook:4981 #, fuzzy msgid "" "This simple application draws a curve with Cairo and displays the control " "points for each end of the curve." msgstr "" "Detta enkla program ritar en kurva med Cairo och visar kontrollpunkterna för " "varje ände av kurvan." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:4988 msgctxt "_" msgid "" "external ref='figures/drawingarea_curve.png' " "md5='1a9cdaaad2b17b89d8450f949c1ddef5'" msgstr "" "external ref='figures/drawingarea_curve.png' " "md5='1a9cdaaad2b17b89d8450f949c1ddef5'" #. (itstool) path: section/para #: C/index-in.docbook:4992 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:4993 msgid "" "The only difference between this example and the straight line example is in " "the on_draw() function, but there are a few new " "concepts and functions introduced here, so let's examine them briefly." msgstr "" "Den enda skillnaden mellan detta exempel och exemplet för raka linjer är i " "funktionen on_draw(), men några nya koncept och " "funktioner introduceras här, så låt oss kort ta en titt på dem." #. (itstool) path: section/para #: C/index-in.docbook:4999 #, fuzzy msgid "" "We make a call to Cairo::Context::scale(), passing " "in the width and height of the drawing area. This scales the user-space " "coordinate system such that the width and height of the widget are both " "equal to 1.0 'units'. There's no particular reason to scale the coordinate " "system in this case, but sometimes it can make drawing operations easier." msgstr "" "Vi gör ett anrop till Cairo::Context::scale(), och " "skickar med bredden och höjden för ritytan. Detta skalar användarrymdens " "koordinatsystem så att bredden och höjden för komponenten båda motsvarar 1.0 " "”enheter”. Det finns ingen specifik orsak att skala koordinatsystemet i " "detta fall, men ibland kan det göra ritoperationer lättare." #. (itstool) path: section/para #: C/index-in.docbook:5008 #, fuzzy msgid "" "The call to Cairo::Context::curve_to() should be " "fairly self-explanatory. The first pair of coordinates define the control " "point for the beginning of the curve. The second set of coordinates define " "the control point for the end of the curve, and the last set of coordinates " "define the destination point. To make the concept of control points a bit " "easier to visualize, a line has been drawn from each control point to the " "end-point on the curve that it is associated with. Note that these control " "point lines are both translucent. This is achieved with a variant of " "set_source_rgb() called " "set_source_rgba(). This function takes a fourth " "argument specifying the alpha value of the color (valid values are between 0 " "and 1)." msgstr "" "Anropet till Cairo::Context::curve_to() bör vara " "rätt självförklarande. Det första paret koordinater definierar " "kontrollpunkten för början på kurvan. Den andra uppsättningen koordinater " "definierar kontrollpunkten för slutet på kurvan, och den sista uppsättningen " "koordinater definierar målpunkten. För att göra konceptet med " "kontrollpunkter lite lättare att visualisera har en linje ritats från varje " "kontrollpunkt till slutpunkten på kurvan som den är associerad med. " "Observera att dess kontrollpunktslinjer båda är genomskinliga. Detta " "åstadkoms med en variant av set_source_rgb() som " "kallas set_source_rgba(). Denna funktion tar ett " "fjärde argument som ange alfavärdet för färgen (giltiga värden är mellan 0 " "och 1)." #. (itstool) path: section/title #: C/index-in.docbook:5027 msgid "Drawing Arcs and Circles" msgstr "Rita bågar och cirklar" #. (itstool) path: section/para #: C/index-in.docbook:5028 #, fuzzy msgid "" "With Cairo, the same function is used to draw arcs, circles, or ellipses: " "Cairo::Context::arc(). This function takes five " "arguments. The first two are the coordinates of the center point of the arc, " "the third argument is the radius of the arc, and the final two arguments " "define the start and end angle of the arc. All angles are defined in " "radians, so drawing a circle is the same as drawing an arc from 0 to 2 * " "M_PI radians. An angle of 0 is in the direction of the positive X axis (in " "user-space). An angle of M_PI/2 radians (90 degrees) is in the direction of " "the positive Y axis (in user-space). Angles increase in the direction from " "the positive X axis toward the positive Y axis. So with the default " "transformation matrix, angles increase in a clockwise direction. (Remember " "that the positive Y axis points downwards.)" msgstr "" "Med Cairo används samma funktion för att rita bågar, cirklar eller ellipser: " "Cairo::Context::arc(). Denna funktion tar fem " "argument. De första två är koordinaterna för bågen centrum, det tredje " "argumentet är bågens radie, och de sista två argumenten definierar bågens " "start- och slutvinkel. Alla vinklar definieras i radianer, så att rita en " "cirkel är det samma som att rita en båge från 0 till 2 * M_PI radianer. En " "vinkel på 0 är i den positive X-axelns riktning (i användarrymden). En " "vinkel på M_PI/2 radianer (90 grader) är i den positive Y-axelns riktning (i " "användarrymden). Vinklar ökar i riktningen från den positive X-axeln till " "den positive Y-axeln. Så med standardtransformationsmatrisen ökar vinklar i " "medurs riktning. (Kom ihåg att den positiva Y-axeln pekare nedåt.)" #. (itstool) path: section/para #: C/index-in.docbook:5043 #, fuzzy msgid "" "To draw an ellipse, you can scale the current transformation matrix by " "different amounts in the X and Y directions. For example, to draw an ellipse " "with center at x, y and size " "width, height:" msgstr "" "För att rita en ellips kan du skala den aktuella transformationsmatrisen med " "olika mängder i X- och Y-riktningarna. För att exempelvis rita en ellips med " "centrum i x, y och storleken " "width, height:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5049 #, fuzzy, no-wrap msgid "" "context->save();\n" "context->translate(x, y);\n" "context->scale(width / 2.0, height / 2.0);\n" "context->arc(0.0, 0.0, 1.0, 0.0, 2 * M_PI);\n" "context->restore();" msgstr "" "context->save();\n" "context->translate(x, y);\n" "context->scale(width / 2.0, height / 2.0);\n" "context->arc(0.0, 0.0, 1.0, 0.0, 2 * M_PI);\n" "context->restore();" #. (itstool) path: section/para #: C/index-in.docbook:5057 msgid "" "Here's an example of a simple program that draws an arc, a circle and an " "ellipse into a drawing area." msgstr "" "Här är ett exempel på ett enkelt program som ritar en båge, en cirkel och en " "ellips på en rityta." #. (itstool) path: figure/title #: C/index-in.docbook:5062 msgid "Drawing Area - Arcs" msgstr "Rityta - Bågar" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5064 msgctxt "_" msgid "" "external ref='figures/drawingarea_arcs.png' " "md5='d94b40e33b9fab7ea9e2c870b97fcf0c'" msgstr "" "external ref='figures/drawingarea_arcs.png' " "md5='d94b40e33b9fab7ea9e2c870b97fcf0c'" #. (itstool) path: section/para #: C/index-in.docbook:5068 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:5070 #, fuzzy msgid "" "There are a couple of things to note about this example code. Again, the " "only real difference between this example and the previous ones is the " "on_draw() function, so we'll limit our focus to " "that function. In addition, the first part of the function is nearly " "identical to the previous examples, so we'll skip that portion." msgstr "" "Det finns några saker att observera om denna exempelkod. Den enda riktiga " "skillnaden mellan detta exempel och det föregående är återigen " "on_draw()-funktionen, så vi kommer begränsa vårt " "fokus till den funktionen. Vidare är funktionens första del nästan identisk " "med de tidigare exemplen, så vi hoppar över den delen." #. (itstool) path: section/para #: C/index-in.docbook:5078 #, fuzzy msgid "" "Note that in this case, we've expressed nearly everything in terms of the " "height and width of the window, including the width of the lines. Because of " "this, when you resize the window, everything scales with the window. Also " "note that there are three drawing sections in the function and each is " "wrapped with a save()/restore() pair so that we're back at a known state after each drawing." msgstr "" "Observera att vi i detta fall uttryckt nästan allt i termer av fönstrets " "höjd och bredd, inklusive linjebredden. På grund av detta så skalas allt med " "fönstret då du ändrar storlek på det. Se också att det finns tre " "ritfunktioner, och var och en omsluts av ett par save()/restore() så att vi är tillbaka i ett " "känt tillstånd efter varje utritning." #. (itstool) path: section/para #: C/index-in.docbook:5087 #, fuzzy msgid "" "The section for drawing an arc introduces one new function, " "close_path(). This function will in effect draw a " "straight line from the current point back to the first point in the path. " "There is a significant difference between calling close_path() and manually drawing a line back to the starting point, however. " "If you use close_path(), the lines will be nicely " "joined together. If you use line_to() instead, the " "lines will end at the same point, but Cairo won't do any special joining." msgstr "" "Avsnittet för att rita en båge introducerar en ny funktion, " "close_path(). Denna funktion kommer praktiskt sett " "rita en rak linje från den aktuella punkten tillbaka till banans först " "punkt. Det finns dock en betydande skillnad mellan att anropa " "close_path() och att manuellt rita en linje " "tillbaka till startpunkten. Om du använder close_path() kommer linjerna vara fint ihopkopplade. Om du i stället använder " "line_to() kommer linjerna sluta på samma punkt, men " "Cairo kommer inte koppla ihop dem på något speciellt sätt." #. (itstool) path: note/title #: C/index-in.docbook:5100 msgid "Drawing counter-clockwise" msgstr "Rita moturs" #. (itstool) path: note/para #: C/index-in.docbook:5101 msgid "" "The function Cairo::Context::arc_negative() is " "exactly the same as Cairo::Context::arc() but the " "angles go the opposite direction." msgstr "" "Funktionen Cairo::Context::arc_negative() är exakt " "densamma som Cairo::Context::arc() men vinklarna " "går i motsatt riktning." #. (itstool) path: section/title #: C/index-in.docbook:5113 msgid "Drawing Text" msgstr "Rita text" #. (itstool) path: section/title #: C/index-in.docbook:5116 msgid "Drawing Text with Pango" msgstr "Rita text med Pango" #. (itstool) path: section/para #: C/index-in.docbook:5117 #, fuzzy msgid "" "Text is drawn via Pango Layouts. The easiest way to create a " "Pango::Layout is to use Gtk::Widget::" "create_pango_layout(). Once created, the layout can be " "manipulated in various ways, including changing the text, font, etc. " "Finally, the layout can be rendered using the Pango::Layout::" "show_in_cairo_context() method." msgstr "" "Texten ritas via Pango-layouter. Det lättaste sättet att skapa en " "Pango::Layout är att använda Gtk::Widget::" "create_pango_layout(). När den skapats kan layouten manipuleras " "på olika sätt, inklusive att ändra texten, typsnittet o.s.v. Slutligen kan " "layouten renderas med metoden Pango::Layout::" "show_in_cairo_context()." #. (itstool) path: section/para #: C/index-in.docbook:5130 #, fuzzy msgid "" "Here is an example of a program that draws some text, some of it upside-" "down. The Printing chapter contains another example of drawing text." msgstr "" "Här kommer ett exempel på ett program som ritar lite text, delar av den upp " "och ner. Utskriftskapitlet innehåller ett annat exempel på att rita text." #. (itstool) path: figure/title #: C/index-in.docbook:5136 msgid "Drawing Area - Text" msgstr "Rityta - Text" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5138 #, fuzzy msgctxt "_" msgid "" "external ref='figures/drawingarea_pango_text.png' " "md5='07c39668c9dda2ac1f9455caf6e4d16a'" msgstr "" "external ref='figures/drawingarea_pango_text.png' " "md5='07c39668c9dda2ac1f9455caf6e4d16a'" #. (itstool) path: section/para #: C/index-in.docbook:5142 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:5154 msgid "Drawing Images" msgstr "Rita bilder" #. (itstool) path: section/para #: C/index-in.docbook:5155 #, fuzzy msgid "" "There is a method for drawing from a Gdk::Pixbuf to a " "Cairo::Context. A Gdk::Pixbuf " "buffer is a useful wrapper around a collection of pixels, which can be read " "from files, and manipulated in various ways." msgstr "" "Det finns en metod för att rita från en Gdk::Pixbuf " "till en Cairo::Context. En Gdk::Pixbuf-buffert är ett användbart omslag runt en samling bildpunkter, " "vilka kan läsas in från filer och manipuleras på olika sätt." #. (itstool) path: section/para #: C/index-in.docbook:5162 #, fuzzy msgid "" "Probably the most common way of creating Gdk::Pixbufs " "is to use Gdk::Pixbuf::create_from_file() or " "Gdk::Pixbuf::create_from_resource(), which can read " "an image file, such as a png file into a pixbuf ready for rendering." msgstr "" "Det vanligaste sättet att skapa Gdk::Pixbuf-buffertar " "är troligen att använda Gdk::Pixbuf::create_from_file() eller Gdk::Pixbuf::create_from_resource(), vilka kan läsa en bildfil, som en png-fil in i en pixbuf som är " "klar för rendering." #. (itstool) path: section/para #: C/index-in.docbook:5170 #, fuzzy msgid "" "The Gdk::Pixbuf can be rendered by setting it as the " "source pattern of the Cairo context with Gdk::Cairo::" "set_source_pixbuf(). Then draw the image with either " "Cairo::Context::paint() (to draw the whole image), " "or Cairo::Context::rectangle() and " "Cairo::Context::fill() (to fill the specified " "rectangle). set_source_pixbuf() is not a member of " "Cairo::Context. It takes a Cairo::Context as its first parameter." msgstr "" "Gdk::Pixbuf-bufferten kan renderas genom att ställa " "in den som källmönstret för Cairo-kontexten med Gdk::Cairo::" "set_source_pixbuf(). Rita sedan bilden med antingen " "Cairo::Context::paint() (för att rita hela bilden), " "eller Cairo::Context::rectangle() och " "Cairo::Context::fill() (för att fylla den angivna " "rektangeln). set_source_pixbuf() är inte en medlem " "av Cairo::Context. Den tar en Cairo::" "Context som sin första parameter." #. (itstool) path: section/para #: C/index-in.docbook:5181 #, fuzzy msgid "" "Here is a small bit of code to tie it all together: (Note that usually you " "wouldn't load the image every time in the draw signal handler! It's just " "shown here to keep it all together.)" msgstr "" "Här är lite kod som knyter ihop alltsamman: (Observera att vanligen skulle " "du inte läsa in bilden varje gång i ritsignalhanteraren! Det visas bara här " "för att ha allt på samma ställe.)" #. (itstool) path: section/programlisting #: C/index-in.docbook:5186 #, fuzzy, no-wrap msgid "" "void MyArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr, int width, int height)\n" "{\n" " auto image = Gdk::Pixbuf::create_from_file(\"myimage.png\");\n" " // Draw the image at 110, 90, except for the outermost 10 pixels.\n" " Gdk::Cairo::set_source_pixbuf(cr, image, 100, 80);\n" " cr->rectangle(110, 90, image->get_width()-20, image->get_height()-20);\n" " cr->fill();\n" "}" msgstr "" "void MyArea::on_draw(const Cairo::RefPtr<Cairo::Context>& cr, int width, int height)\n" "{\n" " auto image = Gdk::Pixbuf::create_from_file(\"myimage.png\");\n" " // Rita bilden på 110, 90, förutom de yttersta 10 bildpunkterna.\n" " Gdk::Cairo::set_source_pixbuf(cr, image, 100, 80);\n" " cr->rectangle(110, 90, image->get_width()-20, image->get_height()-20);\n" " cr->fill();\n" "}" #. (itstool) path: para/screen #: C/index-in.docbook:5203 #, no-wrap msgid "$ glib-compile-resources --target=resources.c --generate-source image.gresource.xml" msgstr "$ glib-compile-resources --target=resources.c --generate-source image.gresource.xml" #. (itstool) path: section/para #: C/index-in.docbook:5197 #, fuzzy msgid "" "Here is an example of a simple program that draws an image. The program " "loads the image from a resource file. See the Gio::Resource and glib-compile-resources section. Use " "glib-compile-resources to compile the resources " "into a C source file that can be compiled and linked with the C++ code. E.g. " "<_:screen-1/>" msgstr "" "Här är ett exempel på ett enkelt program som ritar en bild. Programmet läser " "in bilden från en resursfil. Se avsnittet Gio::Resource och glib-compile-resources. Använd " "glib-compile-resources för att kompilera " "resurserna till en C-källfil som kan kompileras och länkas med C++-koden. " "Exempelvis <_:screen-1/>" #. (itstool) path: figure/title #: C/index-in.docbook:5206 msgid "Drawing Area - Image" msgstr "Rityta - Bild" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5208 msgctxt "_" msgid "" "external ref='figures/drawingarea_image.png' " "md5='4fbb9f465b7b8b209f295c44dd664d5a'" msgstr "" "external ref='figures/drawingarea_image.png' " "md5='4fbb9f465b7b8b209f295c44dd664d5a'" #. (itstool) path: section/para #: C/index-in.docbook:5212 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:5226 msgid "Example Application: Creating a Clock with Cairo" msgstr "Exempelprogram: Skapa en klocka med Cairo" #. (itstool) path: section/para #: C/index-in.docbook:5228 msgid "" "Now that we've covered the basics of drawing with Cairo, let's try to put it " "all together and create a simple application that actually does something. " "The following example uses Cairo to create a custom Clock widget. The clock has a second hand, a minute hand, and an hour " "hand, and updates itself every second." msgstr "" "Nu då vi täckt grunderna med att rita i Cairo kan vi försöka sätta ihop " "allting och skapa ett enkelt program som faktiskt gör något. Följande " "exempel använder Cairo för att skapa en anpassad komponent Clock. Klockan har en sekundvisare, en minutvisare och en timvisare, " "och uppdaterar sig själv varje sekund." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5236 #, fuzzy msgctxt "_" msgid "" "external ref='figures/cairo_clock.png' md5='fceab985fd70bec94b273f78dd481d31'" msgstr "" "external ref='figures/cairo_clock.png' md5='fceab985fd70bec94b273f78dd481d31'" #. (itstool) path: section/para #: C/index-in.docbook:5238 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:5239 #, fuzzy msgid "" "As before, almost all of the interesting stuff is done in the draw function " "on_draw(). Before we dig into the draw function, " "notice that the constructor for the Clock widget " "connects a handler function on_timeout() to a timer " "with a timeout period of 1000 milliseconds (1 second). This means that " "on_timeout() will get called once per second. The " "sole responsibility of this function is to invalidate the window so that " "gtkmm will be forced to redraw it." msgstr "" "Som tidigare görs nästan allting intressant i ritfunktionen " "on_draw(). Innan vi sätter tänderna i ritfunktionen " "kan vi se att konstruktorn för Clock-komponenten " "ansluter en hanterarfunktion on_timeout() till en " "tidtagare med timeoutperioden 1000 millisekunder (1 sekund). Detta betyder " "att on_timeout() kommer anropas en gång per sekund. " "Denna funktions enda ansvar är att invalidera fönstret så att " "gtkmm kommer tvingas rita om det." #. (itstool) path: section/para #: C/index-in.docbook:5250 msgid "" "Now let's take a look at the code that performs the actual drawing. The " "first section of on_draw() should be pretty " "familiar by now. This example again scales the coordinate system to be a " "unit square so that it's easier to draw the clock as a percentage of window " "size so that it will automatically scale when the window size is adjusted. " "Furthermore, the coordinate system is scaled over and down so that the (0, " "0) coordinate is in the very center of the window." msgstr "" "Låt oss nu ta en titt på koden som utför det faktiska ritandet. Den första " "delen av on_draw() bör vara ganska bekant nu. Detta " "exempel skalar igen koordinatsystemet till en enhetskvadrat så att det är " "lättare att rita klockan som en procentsats av fönsterstorleken, så att den " "automatiskt kommer skalas när fönsterstorleken justeras. Vidare skalas och " "flyttas koordinatsystemet så att koordinaten (0, 0) är i mitten av fönstret." #. (itstool) path: section/para #: C/index-in.docbook:5260 #, fuzzy msgid "" "The function Cairo::Context::paint() is used here " "to set the background color of the window. This function takes no arguments " "and fills the current surface (or the clipped portion of the surface) with " "the source color currently active. After setting the background color of the " "window, we draw a circle for the clock outline, fill it with white, and then " "stroke the outline in black. Notice that both of these actions use the " "_preserve variant to preserve the current path, and " "then this same path is clipped to make sure that our next lines don't go " "outside the outline of the clock." msgstr "" "Funktionen Cairo::Context::paint() används här för " "att ställa in fönstrets bakgrundsfärg. Denna funktion tar inga argument och " "fyller den aktuella ytan (eller den klippta delen av ytan) med den aktiva " "källfärgen. Efter att ha ställt in fönstrets bakgrundsfärg ritar vi en " "cirkel som klockans kontur, fyller den med vitt, och stryker sedan konturen " "i svart. Observera att båda dessa åtgärder använder varianten " "_preserve för att bevara den aktuella banan, och " "sedan klipps denna bana för att säkerställa att våra nästa linjer inte går " "utanför klockans kontur." #. (itstool) path: section/para #: C/index-in.docbook:5272 msgid "" "After drawing the outline, we go around the clock and draw ticks for every " "hour, with a larger tick at 12, 3, 6, and 9. Now we're finally ready to " "implement the time-keeping functionality of the clock, which simply involves " "getting the current values for hours, minutes and seconds, and drawing the " "hands at the correct angles." msgstr "" "Efter att ha ritat konturen går vi runt klockan och ritar streck för varje " "timme, med ett större streck vid 12, 3, 6 och 9. Slutligen är vi redo att " "implementera klockans tidtagande, vilket helt enkelt innefattar att få de " "aktuella värdena för timmar, minuter och sekunder, och rita visarna på rätt " "vinklar." #. (itstool) path: chapter/para #: C/index-in.docbook:5284 #, fuzzy msgid "" "The Gtk::DragSource and Gtk::DropTarget event controllers have methods and signals which are used for " "Drag and Drop." msgstr "" "Händelsekontrollerna Gtk::DragSource och " "Gtk::DropTarget har metoder och signaler vilka " "används för dra-och-släpp." #. (itstool) path: section/title #: C/index-in.docbook:5290 msgid "Sources and Targets" msgstr "Källor och mål" # TODO: literal sources och targets? #. (itstool) path: section/para #: C/index-in.docbook:5291 #, fuzzy msgid "" "Things are dragged from sources to be dropped on " "targets. Each source and target has information about the " "data formats that it can send or receive, provided by Gdk::" "ContentFormats. A drop target will only accept a dragged item if " "they both share a compatible format. Appropriate signals will then be " "emitted, telling the signal handlers which format was used." msgstr "" "Saker dras från sources för att släppas på " "targets. Varje källa och mål har information om " "dataformaten som det kan skicka eller ta emot, tillhandahållet av " "Gdk::ContentFormats. Ett släppmål kommer endast " "acceptera ett draget objekt om de båda delar ett kompatibelt format. " "Lämpliga signaler kommer sedan sändas ut, som säger till signalhanterarna " "vilket format som användes." #. (itstool) path: section/para #: C/index-in.docbook:5299 msgid "" "Gdk::ContentFormats objects contain information about " "available GTypes and mime types (media types)." msgstr "" "Gdk::ContentFormats-objekt innehåller information om " "tillgängliga GType- och mime-typer (mediatyper)." #. (itstool) path: section/para #: C/index-in.docbook:5309 #, fuzzy msgid "" "Widgets can be identified as sources or targets using " "Gtk::DragSource and Gtk::DropTarget event controllers." msgstr "" "Widget-komponenter kan identifieras som källor eller " "mål med händelsekontrollerna Gtk::DragSource och " "Gtk::DropTarget." #. (itstool) path: section/programlisting #: C/index-in.docbook:5314 #, no-wrap msgid "" "auto source = Gtk::DragSource::create();\n" "m_source_widget.add_controller(source);" msgstr "" "auto source = Gtk::DragSource::create();\n" "m_source_widget.add_controller(source);" #. (itstool) path: listitem/para #: C/index-in.docbook:5321 msgid "" "void set_content(const Glib::RefPtr<Gdk::ContentProvider>" "& content): Sets a content provider on the drag source." msgstr "" "void set_content(const Glib::RefPtr<Gdk::ContentProvider>" "& content): Ställer in en innehållstillhandahållare på " "dragkällan." #. (itstool) path: listitem/para #: C/index-in.docbook:5327 msgid "" "void set_actions(Gdk::DragAction actions): Sets the " "actions on the drag source. For instance Gdk::DragAction::COPY | " "Gdk::DragAction::MOVE." msgstr "" "void set_actions(Gdk::DragAction actions): Ställer in " "åtgärderna på dragkällan. Till exempel Gdk::DragAction::COPY | Gdk::" "DragAction::MOVE." #. (itstool) path: listitem/para #: C/index-in.docbook:5334 msgid "" "void set_icon(const Glib::RefPtr<const Gdk::Paintable>& " "paintable, int hot_x, int hot_y): Sets a paintable to use as icon " "during DND operations." msgstr "" "void set_icon(const Glib::RefPtr<const Gdk::Paintable>& " "paintable, int hot_x, int hot_y): Ställer in en rityta att använda " "som ikon under dra-och-släpp-operationer." #. (itstool) path: section/para #: C/index-in.docbook:5317 msgid "Some DragSource methods: <_:itemizedlist-1/>" msgstr "Några DragSource-metoder: <_:itemizedlist-1/>" #. (itstool) path: section/programlisting #: C/index-in.docbook:5342 #, fuzzy, no-wrap msgid "" "auto target = Gtk::DropTarget::create(gtype, actions);\n" "m_target_widget.add_controller(target);" msgstr "" "auto target = Gtk::DropTarget::create(gtype, actions);\n" "m_target_widget.add_controller(target);" #. (itstool) path: listitem/para #: C/index-in.docbook:5349 msgid "" "void set_gtypes(const std::vector<GType>& types): Sets the supported types for this drop target." msgstr "" "void set_gtypes(const std::vector<GType>& types): Ställer in typerna som stöds för detta släppmål." #. (itstool) path: listitem/para #: C/index-in.docbook:5355 msgid "" "void set_actions(Gdk::DragAction actions): Sets the " "actions that this drop target supports." msgstr "" "void set_actions(Gdk::DragAction actions): Ställer in " "åtgärderna som detta släppmål stöder." #. (itstool) path: listitem/para #: C/index-in.docbook:5361 msgid "" "Glib::ValueBase get_value() const: Gets the current drop " "data, as a Glib::Value." msgstr "" "Glib::ValueBase get_value() const: Erhåller aktuella " "släppdata, som ett Glib::Value." #. (itstool) path: listitem/para #: C/index-in.docbook:5367 msgid "" "void reject(): Rejects the ongoing drop operation. This " "function should be used when delaying the decision on whether to accept a " "drag or not until after reading the data." msgstr "" "void reject(): Förkastar den pågående släpp-operationen. " "Denna funktion bör användas vid fördröjning av beslutet huruvida en dragning " "ska accepteras eller inte förrän data har lästs." #. (itstool) path: section/para #: C/index-in.docbook:5345 msgid "Some DropTarget methods: <_:itemizedlist-1/>" msgstr "Några DropTarget-metoder: <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:5381 #, fuzzy msgid "" "When a drop target has accepted a dragged item, certain signals will be " "emitted, depending on what action has been selected. For instance, the user " "might have held down the Shift key to specify a " "move rather than a copy. Remember that " "the user can only select the actions which you have specified in your calls " "to Gtk::DragSource::set_actions() and " "Gtk::DropTarget::set_actions()." msgstr "" "När ett släppmål har accepterat ett draget objekt kommer vissa signaler " "sändas ut, beroende på vilken åtgärd som har valts. Användaren kan " "exempelvis ha hållit ner Skift-tangenten för att ange ett " "move snarare än ett copy. Kom ihåg att " "användaren endast kan välja åtgärderna som du har angivit i dina anrop till " "Gtk::DragSource::set_actions() och Gtk::" "DropTarget::set_actions()." #. (itstool) path: listitem/para #: C/index-in.docbook:5394 msgid "" "drag_begin: Provides a Gdk::Drag." msgstr "" "drag_begin: Tillhandahåller en Gdk::Drag." #. (itstool) path: listitem/para #: C/index-in.docbook:5395 msgid "" "prepare: Shall return a Gdk::ContentProvider, with the data to use for the drag that is about to start." msgstr "" "prepare: Ska returnera en Gdk::" "ContentProvider, med data att använda för dragningen som håller " "på att börja." #. (itstool) path: listitem/para #: C/index-in.docbook:5397 #, fuzzy msgid "" "drag_end: Provides a Gdk::Drag, " "and a bool that tells if the drag was performing a " "move and the data should be deleted." msgstr "" "drag_end: Tillhandahåller en Gdk::Drag, och en bool som berättar om dragningen utförde ett " "move och att data ska tas bort." #. (itstool) path: listitem/para #: C/index-in.docbook:5400 msgid "" "drag_cancel: Emitted on the drag source when a drag has " "failed." msgstr "" "drag_cancel: Sänds ut på dragkällan när en dragning har " "misslyckats." #. (itstool) path: section/para #: C/index-in.docbook:5391 msgid "" "The source widget will emit these DragSource signals: " "<_:itemizedlist-1/>" msgstr "" "Källkomponenten kommer sända ut dessa DragSource-" "signaler: <_:itemizedlist-1/>" #. (itstool) path: listitem/para #: C/index-in.docbook:5406 msgid "" "enter: Provides coordinates. Shall return the preferred " "Gdk::DragAction." msgstr "" "enter: Tillhandahåller koordinater. Ska returnera " "föredragen Gdk::DragAction." # TODO: Description is same as enter? #. (itstool) path: listitem/para #: C/index-in.docbook:5408 msgid "" "motion: Provides coordinates. Shall return the preferred " "Gdk::DragAction." msgstr "" "motion: Tillhandahåller koordinater. Ska returnera " "föredragen Gdk::DragAction." #. (itstool) path: listitem/para #: C/index-in.docbook:5410 msgid "" "leave: Emitted on the drop site when the pointer leaves " "the widget." msgstr "" "leave: Sänds ut på släpplatsen när pekaren lämnar " "komponenten." #. (itstool) path: listitem/para #: C/index-in.docbook:5412 msgid "" "accept: Provides a Gdk::Drop. You " "can call the status() method of the Gdk::" "Drop to indicate which actions will be accepted." msgstr "" "accept: Tillhandahåller en Gdk::Drop. Du kan anropa status()-metoden för " "denna Gdk::Drop för att indikera vilka åtgärder som " "kommer accepteras." #. (itstool) path: listitem/para #: C/index-in.docbook:5415 msgid "" "drop: Provides the data being dropped and coordinates. " "Shall return a bool indicating whether the drop was accepted." msgstr "" "drop: Tillhandahåller de data som släpps och koordinater. " "Ska returnera en bool som indikerar huruvida släppet " "accepterades." #. (itstool) path: section/para #: C/index-in.docbook:5403 msgid "" "The target widget will emit these DropTarget signals: " "<_:itemizedlist-1/>" msgstr "" "Målkomponenten kommer sända ut dessa DropTarget-" "signaler: <_:itemizedlist-1/>" #. (itstool) path: listitem/para #: C/index-in.docbook:5425 msgid "Gtk::DragSource::signal_prepare()" msgstr "Gtk::DragSource::signal_prepare()" #. (itstool) path: listitem/para #: C/index-in.docbook:5426 msgid "Gtk::DropTarget::signal_enter()" msgstr "Gtk::DropTarget::signal_enter()" #. (itstool) path: listitem/para #: C/index-in.docbook:5427 msgid "Gtk::DropTarget::signal_motion()" msgstr "Gtk::DropTarget::signal_motion()" #. (itstool) path: listitem/para #: C/index-in.docbook:5428 msgid "Gtk::DropTarget::signal_accept()" msgstr "Gtk::DropTarget::signal_accept()" #. (itstool) path: listitem/para #: C/index-in.docbook:5429 msgid "Gtk::DropTarget::signal_drop()" msgstr "Gtk::DropTarget::signal_drop()" #. (itstool) path: section/para #: C/index-in.docbook:5419 msgid "" "The following signals call only one signal handler when emitted. When you " "connect a handler to such a signal, your signal handler must be called " "before (instead of) the default handler, otherwise it won't be called. Set " "the after parameter in connect() " "to false. <_:itemizedlist-1/>" msgstr "" "Följande signaler anropar endast en signalhanterare när de sänds ut. När du " "ansluter en hanterare till en sådan signal måste din signalhanterare anropas " "före (i stället för) standardhanteraren, annars kommer den inte anropas. " "Ställ in parametern after i connect() till false. <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:5438 #, fuzzy msgid "" "Here is a very simple example, demonstrating a drag and drop Copy operation:" msgstr "" "Här är ett väldigt enkelt exempel som demonstrerar en dra-och-släpp-" "operation för Copy:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5443 #, fuzzy msgctxt "_" msgid "" "external ref='figures/drag_and_drop.png' " "md5='c13dd8b7faa3d523444c101e42572a10'" msgstr "" "external ref='figures/drag_and_drop.png' " "md5='c13dd8b7faa3d523444c101e42572a10'" #. (itstool) path: section/para #: C/index-in.docbook:5447 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:5449 msgid "There is a more complex example in examples/others/dnd." msgstr "Det finns ett mer komplext exempel i examples/others/dnd." #. (itstool) path: chapter/title #: C/index-in.docbook:5458 #, fuzzy msgid "The Clipboard" msgstr "Urklipp" #. (itstool) path: chapter/para #: C/index-in.docbook:5460 msgid "" "Simple text copy-paste functionality is provided for free by widgets such as " "Gtk::Entry and Gtk::TextView, " "but you might need special code to deal with your own data formats. For " "instance, a drawing program would need special code to allow copy and paste " "within a view, or between documents." msgstr "" "Enkel kopiera/klistra in-funktionalitet för text tillhandahålls på köpet av " "komponenter som Gtk::Entry och Gtk::" "TextView, men du kan behöva specialkod för att hantera dina egna " "dataformat. Exempelvis skulle ett ritprogram behöva specialkod för att " "tillåta kopiering och inklistring i en vy, eller mellan dokument." #. (itstool) path: chapter/para #: C/index-in.docbook:5466 #, fuzzy msgid "" "You can get a clipboard instance with Gtk::Widget::" "get_clipboard() or Gdk::Display::get_clipboard()." msgstr "" "Du kan få en urklippsinstans med Gtk::Widget::get_clipboard() eller Gdk::Display::get_clipboard()." #. (itstool) path: chapter/para #: C/index-in.docbook:5471 #, fuzzy msgid "" "Your application doesn't need to wait for clipboard operations, particularly " "between the time when the user chooses Copy and then later chooses Paste. " "Many Gdk::Clipboard methods take sigc::" "slots which specify callback methods. When Gdk::" "Clipboard is ready, it will call these methods, providing the " "requested data." msgstr "" "Ditt program behöver inte vänta på urklippsoperationer, speciellt mellan " "tiden när användaren väljer Kopiera och sedan senare väljer Klistra in. " "Många Gdk::Clipboard-metoder tar sigc::" "slot som anger återanropsmetoder. När Gdk::Clipboard är redo kommer det anropa dessa metoder, och tillhandahålla " "begärda data." #. (itstool) path: chapter/para #: C/index-in.docbook:5479 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:5482 msgid "Formats" msgstr "Format" #. (itstool) path: section/para #: C/index-in.docbook:5484 msgid "" "Different applications contain different types of data, and they might make " "that data available in a variety of formats. gtkmm calls these data types formats." msgstr "" "Olika program innehåller olika typer av data, och de kan göra dessa data " "tillgängliga i ett antal olika format. gtkmm " "kallar dessa datatyper för format." #. (itstool) path: section/para #: C/index-in.docbook:5488 #, fuzzy msgid "" "For instance, gedit can supply and receive the " "text/plain mime type, so you can paste data into " "gedit from any application that supplies that " "format. Or two different image editing applications might supply and receive " "a variety of image formats. As long as one application can receive one of " "the formats that the other supplies then you will be able to copy data from " "one to the other." msgstr "" "Exempelvis kan gedit tillhandahålla och ta emot " "mime-typen text/plain, så du kan klistra in data i " "gedit från alla program som tillhandahåller det " "formatet. Eller så kan två olika bildredigeringsprogram tillhandahålla och " "ta emot ett antal bildformat. Så länge som ett program kan ta emot ett av " "formaten som det andra tillhandahåller så kommer du kunna kopiera data från " "ett till det andra." #. (itstool) path: section/para #: C/index-in.docbook:5496 #, fuzzy msgid "" "Clipboard data can be in a variety of binary formats. This chapter, and the " "examples, assume that the data is 8-bit text. This would allow us to use an " "XML format for the clipboard data. However this would probably not be " "appropriate for binary data such as images." msgstr "" "Urklippsdata kan vara i ett antal binära format. Detta kapitel och exemplen " "antar att data är 8-bitars text, Detta skulle låta oss använda ett XML-" "format för urklippsdata. Detta skulle dock troligen inte var lämpligt för " "binärdata som bilder." #. (itstool) path: section/para #: C/index-in.docbook:5503 #, fuzzy msgid "" "The Drag and Drop API uses the " "same mechanism. You should probably use the same data formats for both " "Clipboard and Drag and Drop operations." msgstr "" "Dra och släpp-API:t använder " "samma mekanism. Du bör troligen använda samma dataformat för både urklipps- " "och ”dra och släpp”-operationer." #. (itstool) path: section/title #: C/index-in.docbook:5508 msgid "Copy" msgstr "Kopiera" #. (itstool) path: section/para #: C/index-in.docbook:5510 #, fuzzy msgid "" "When the user asks to copy some data, you should copy the data to the " "Clipboard. For instance," msgstr "" "När användaren ber dig kopiera data bör du kopiera dessa data till ett " "Clipboard. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:5514 #, fuzzy, no-wrap msgid "" "void ExampleWindow::on_button_copy()\n" "{\n" " get_clipboard()->set_text(\"example_custom_target\");\n" "}" msgstr "" "void ExampleWindow::on_button_copy()\n" "{\n" " get_clipboard()->set_text(\"example_custom_target\");\n" "}" #. (itstool) path: section/title #: C/index-in.docbook:5522 msgid "Paste" msgstr "Klistra in" #. (itstool) path: section/para #: C/index-in.docbook:5524 #, fuzzy msgid "" "When the user asks to paste data from the Clipboard, " "you should request a specific format and provide a callback method which " "will be called with the actual data. For instance:" msgstr "" "När användaren ber att klistra in data från Clipboard " "bör du begära ett specifikt format och tillhandahålla en återanropsmetod som " "kommer anropas med faktiska data. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5529 #, no-wrap msgid "" "void ExampleWindow::on_button_paste()\n" "{\n" " get_clipboard()->read_text_async(sigc::mem_fun(*this,\n" " &ExampleWindow::on_clipboard_received));\n" "}" msgstr "" "void ExampleWindow::on_button_paste()\n" "{\n" " get_clipboard()->read_text_async(sigc::mem_fun(*this,\n" " &ExampleWindow::on_clipboard_received));\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:5535 msgid "Here is an example callback method:" msgstr "Här är ett exempel på en återanropsmetod:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5537 #, fuzzy, no-wrap msgid "" "void ExampleWindow::on_clipboard_received(Glib::RefPtr<Gio::AsyncResult>& result)\n" "{\n" " auto text = get_clipboard()->read_text_finish(result);\n" " //Do something with the pasted data.\n" "}" msgstr "" "void ExampleWindow::on_clipboard_received(Glib::RefPtr<Gio::AsyncResult>& result)\n" "{\n" " auto text = get_clipboard()->read_text_finish(result);\n" " //Gör något med inklistrade data.\n" "}" #. (itstool) path: section/title #: C/index-in.docbook:5544 msgid "Discovering the available formats" msgstr "Upptäcka de tillgängliga formaten" #. (itstool) path: section/para #: C/index-in.docbook:5546 #, fuzzy msgid "" "To find out what formats are currently available on the " "Clipboard for pasting, call the " "get_formats() method. Then call a Gdk::" "ContentFormats method to find out if a format that your " "application supports is available." msgstr "" "För att få reda på vilka format som för närvarande är tillgängliga för " "inklistring i Clipboard, anropa metoden " "get_formats(). Anropa sedan en Gdk::" "ContentFormats-metod för att få reda på om ett format som ditt " "program stöder finns tillgängligt." #. (itstool) path: section/title #: C/index-in.docbook:5560 C/index-in.docbook:5959 msgid "Simple" msgstr "Enkelt" #. (itstool) path: section/para #: C/index-in.docbook:5561 #, fuzzy msgid "" "This example allows copy and pasting of application-specific data, using the " "standard text format. Although this is simple, it's not ideal because it " "does not identify the Clipboard data as being of a " "particular type." msgstr "" "Detta exempel tillåter kopiering och inklistring av programspecifika data, " "med standardtextformatet. Även om detta är enkelt är det inte idealiskt då " "det inte identifierar Clipboard-data som varande av " "en viss typ." #. (itstool) path: figure/title #: C/index-in.docbook:5569 msgid "Clipboard - Simple" msgstr "Urklipp - Enkelt" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5571 #, fuzzy msgctxt "_" msgid "" "external ref='figures/clipboard_simple.png' " "md5='9eab8350b743743e1571f1d245aea35c'" msgstr "" "external ref='figures/clipboard_simple.png' " "md5='9eab8350b743743e1571f1d245aea35c'" #. (itstool) path: section/para #: C/index-in.docbook:5575 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:5580 msgid "Ideal" msgstr "Idealiskt" #. (itstool) path: listitem/simpara #: C/index-in.docbook:5583 msgid "Defines a custom clipboard target, though the format is still text." msgstr "Definierar ett anpassat urklippsmål, men formatet är fortfarande text." #. (itstool) path: listitem/simpara #: C/index-in.docbook:5584 #, fuzzy msgid "" "It uses the Gdk::ContentFormats::signal_changed() " "signal and disables the Paste button if it can't use anything on the " "clipboard." msgstr "" "Det använder signalen Gdk::ContentFormats::signal_changed() och inaktiverar Paste-knappen om det inte kan använda något i " "urklippet." #. (itstool) path: section/para #: C/index-in.docbook:5581 msgid "This is like the simple example, but it <_:orderedlist-1/>" msgstr "Det här är som det enkla exemplet, men det <_:orderedlist-1/>" #. (itstool) path: figure/title #: C/index-in.docbook:5590 msgid "Clipboard - Ideal" msgstr "Urklipp - Idealiskt" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5592 #, fuzzy msgctxt "_" msgid "" "external ref='figures/clipboard_ideal.png' " "md5='8f284904600e27efa06d39f0741acc2d'" msgstr "" "external ref='figures/clipboard_ideal.png' " "md5='8f284904600e27efa06d39f0741acc2d'" #. (itstool) path: section/para #: C/index-in.docbook:5596 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:5603 msgid "Printing" msgstr "Utskrift" #. (itstool) path: chapter/para #: C/index-in.docbook:5605 #, fuzzy msgid "" "At the application development level, gtkmm's " "printing API provides dialogs that are consistent across applications and " "allows use of Cairo's common drawing API, with Pango-driven text rendering. " "In the implementation of this common API, platform-specific backends and " "printer-specific drivers are used." msgstr "" "På programutvecklingsnivån tillhandahåller gtkmm:" "s utskrifts-API dialogrutor som är konsekventa mellan program och tillåter " "användning av Cairos gemensamma rit-API, med textrendering driven av Pango. " "I implementationen av detta gemensamma API används plattformsspecifika " "bakändar och skrivarspecifika drivrutiner." #. (itstool) path: section/title #: C/index-in.docbook:5611 msgid "PrintOperation" msgstr "PrintOperation" #. (itstool) path: section/para #: C/index-in.docbook:5613 #, fuzzy msgid "" "The primary object is Gtk::PrintOperation, allocated " "for each print operation. To handle page drawing connect to its signals, or " "inherit from it and override the default virtual signal handlers. " "PrintOperation automatically handles all the settings " "affecting the print loop." msgstr "" "Det primära objektet är Gtk::PrintOperation, " "allokerat för varje utskriftsoperation. Anslut till dess signaler för att " "hantera sidritning, eller ärv från den och åsidosätt de virtuella " "standardsignalhanterarna. PrintOperation hanterar " "automatiskt alla inställningar som påverkar utskriftsslingan." #. (itstool) path: listitem/para #: C/index-in.docbook:5630 #, fuzzy msgid "" "begin_print: You must handle this signal, because this is " "where you create and set up a Pango::Layout using the " "provided Gtk::PrintContext, and break up your " "printing output into pages." msgstr "" "begin_print: Du måste hantera denna signal, för detta är " "var du skapar och konfigurerar en Pango::Layout med " "tillhandahållen Gtk::PrintContext, och delar upp dina " "utskriftsutdata i sidor." #. (itstool) path: listitem/para #: C/index-in.docbook:5640 #, fuzzy msgid "" "paginate: Pagination is potentially slow so if you need " "to monitor it you can call the PrintOperation::" "set_show_progress() method and handle this signal." msgstr "" "paginate: Paginering kan potentiellt vara långsam, så om " "du behöver övervaka den kan du anropa metoden PrintOperation::" "set_show_progress() och hantera denna signal." #. (itstool) path: listitem/para #: C/index-in.docbook:5654 #, fuzzy msgid "" "request_page_setup: Provides a PrintContext, page number and Gtk::PageSetup. Handle " "this signal if you need to modify page setup on a per-page basis." msgstr "" "request_page_setup: Tillhandahåller en " "PrintContext, sidnummer och Gtk::" "PageSetup. Hantera denna signal om du behöver ändra " "sidinställningen för enskilda sidor." #. (itstool) path: listitem/para #: C/index-in.docbook:5663 #, fuzzy msgid "" "draw_page: You must handle this signal, which provides a " "PrintContext and a page number. The " "PrintContext should be used to create a " "Cairo::Context into which the provided page should be " "drawn. To render text, iterate over the Pango::Layout " "you created in the begin_print handler." msgstr "" "draw_page: Du måste hantera denna signal som " "tillhandahåller en PrintContext och ett sidnummer. " "Denna PrintContext ska användas för att skapa en " "Cairo::Context som den tillhandahållna sidan ska " "ritas i. Iterera över den Pango::Layout du skapade i " "begin_print-hanteraren för att rendera text." #. (itstool) path: listitem/para #: C/index-in.docbook:5649 msgid "" "For each page that needs to be rendered, the following signals are emitted: " "<_:itemizedlist-1/>" msgstr "" "För varje sida som behöver renderas sänds följande signaler ut: <_:" "itemizedlist-1/>" #. (itstool) path: listitem/para #: C/index-in.docbook:5678 #, fuzzy msgid "" "end_print: A handler for it is a safe place to free any " "resources related to a PrintOperation. If you have " "your custom class that inherits from PrintOperation, " "it is naturally simpler to do it in the destructor." msgstr "" "end_print: En hanterare för den är ett säkert ställe att " "frigöra alla resurser relaterade till en PrintOperation. Om du har din egen anpassade klass som ärver från " "PrintOperation är det förstås enklare att göra det i " "destruktorn." #. (itstool) path: listitem/para #: C/index-in.docbook:5688 #, fuzzy msgid "" "done: This signal is emitted when printing is finished, " "meaning when the print data is spooled. Note that the provided Gtk::" "PrintOperation::Result may indicate that an error occurred. In any " "case you probably want to notify the user about the final status." msgstr "" "done: Denna signal sänds ut när utskriften är klar, " "vilket betyder när utskriftsdata har kölagts. Observera att den " "tillhandahållna Gtk::PrintOperation::Result kan indikera " "att ett fel inträffat. I vilket fall vill du troligen meddela användaren om " "slutlig status." #. (itstool) path: listitem/para #: C/index-in.docbook:5698 #, fuzzy msgid "" "status_changed: Emitted whenever a print job's status " "changes, until it is finished. Call the PrintOperation::" "set_track_print_status() method to monitor the job status after " "spooling. To see the status, use get_status() or " "get_status_string()." msgstr "" "status_changed: Sänds ut närhelst ett utskriftsjobbs " "status ändras, tills det är klart. Anropa metoden " "PrintOperation::set_track_print_status() för att " "övervaka jobbstatusen efter köläggning. Använd get_status() eller get_status_string() för att se " "statusen." #. (itstool) path: section/para #: C/index-in.docbook:5624 #, fuzzy msgid "" "The PrintOperation::run() method starts the print " "loop, during which various signals are emitted: <_:itemizedlist-1/>" msgstr "" "Metoden PrintOperation::run() startar " "utskriftsslingan, under vilken olika signaler sänds ut: <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:5711 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/title #: C/index-in.docbook:5720 msgid "Page setup" msgstr "Sidinställning" #. (itstool) path: section/para #: C/index-in.docbook:5722 #, fuzzy msgid "" "The PrintOperation class has a method called " "set_default_page_setup() which selects the default " "paper size, orientation and margins. To show a page setup dialog from your " "application, use the Gtk::run_page_setup_dialog() " "method, which returns a Gtk::PageSetup object with " "the chosen settings. Use this object to update a PrintOperation and to access the selected Gtk::PaperSize, " "Gtk::PageOrientation and printer-specific margins." msgstr "" "Klassen PrintOperation har en metod som kallas " "set_default_page_setup() och väljer standardvärde " "för pappersstorlek, orientering och marginaler. För att visa en " "sidinställningsdialog från ditt program använder du metoden Gtk::" "run_page_setup_dialog(), vilken returnerar ett Gtk::" "PageSetup-objekt med de valda inställningarna. Använd detta " "objekt för att uppdatera en PrintOperation och för " "att komma åt vald Gtk::PaperSize, Gtk::" "PageOrientation och skrivarspecifika marginaler." #. (itstool) path: section/para #: C/index-in.docbook:5732 msgid "" "You should save the chosen Gtk::PageSetup so you can " "use it again if the page setup dialog is shown again." msgstr "" "Du bör spara vald Gtk::PageSetup så du kan använda " "den igen om sidinställningsdialogen visas igen." #. (itstool) path: section/programlisting #: C/index-in.docbook:5736 #, no-wrap msgid "" "\n" "// Within a class that inherits from Gtk::Window and keeps m_refPageSetup\n" "// and m_refSettings as members...\n" "auto new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, m_refSettings);\n" "m_refPageSetup = new_page_setup;\n" msgstr "" "\n" "// I en klass som ärver från Gtk::Window och behåller m_refPageSetup\n" "// och m_refSettings som medlemmar...\n" "auto new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, m_refSettings);\n" "m_refPageSetup = new_page_setup;\n" #. (itstool) path: section/para #: C/index-in.docbook:5743 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:5747 #, fuzzy msgid "" "The Cairo coordinate system, in the draw_page handler, is " "automatically rotated to the current page orientation. It is normally within " "the printer margins, but you can change that via the " "PrintOperation::set_use_full_page() method. The " "default measurement unit is device pixels. To select other units, use the " "PrintOperation::set_unit() method." msgstr "" "Cairo-koordinatsystemet i draw_page-hanteraren roteras " "automatiskt till aktuell sidorientering. Den är vanligen inom " "skrivarmarginalerna, men du kan ändra det med metoden " "PrintOperation::set_use_full_page(). " "Standardmätenheten är enhetsbildpunkter. Använd metoden " "PrintOperation::set_unit() för att välja andra " "enheter." #. (itstool) path: section/title #: C/index-in.docbook:5759 msgid "Rendering text" msgstr "Rendering av text" #. (itstool) path: section/para #: C/index-in.docbook:5761 #, fuzzy msgid "" "Text rendering is done using Pango. The Pango::Layout " "object for printing should be created by calling the " "PrintContext::create_pango_layout() method. The " "PrintContext object also provides the page metrics, " "via get_width() and get_height(). The number of pages can be set with PrintOperation::" "set_n_pages(). To actually render the Pango text in " "on_draw_page, get a Cairo::Context " "with PrintContext::get_cairo_context() and show the " "Pango::LayoutLines that appear within the requested " "page number." msgstr "" "Textrendering görs med Pango. Pango::Layout-objektet " "för utskrift bör skapas genom att anropa metoden PrintContext::" "create_pango_layout(). PrintContext-" "objektet tillhandahåller också sidmätningar via get_width() och get_height(). Antalet sidor kan " "ställas in med PrintOperation::set_n_pages(). För " "att faktiskt rendera Pango-texten i on_draw_page ordnar " "du en Cairo::Context med PrintContext::" "get_cairo_context() och visar de Pango::LayoutLine som visas inom det begärda sidantalet." #. (itstool) path: section/para #: C/index-in.docbook:5776 #, fuzzy #| msgid "" #| "See an example of " #| "exactly how this can be done." msgid "" "See an example of " "exactly how this can be done." msgstr "" "Se ett exempel på exakt " "hur detta kan göras." #. (itstool) path: section/title #: C/index-in.docbook:5784 msgid "Asynchronous operations" msgstr "Asynkrona operationer" #. (itstool) path: section/para #: C/index-in.docbook:5786 #, fuzzy msgid "" "By default, PrintOperation::run() returns when a " "print operation is completed. If you need to run a non-blocking print " "operation, call PrintOperation::set_allow_async(). " "Note that set_allow_async() is not supported on all " "platforms, however the done signal will still be emitted." msgstr "" "Som standard returnerar PrintOperation::run() när " "en utskriftsoperation är slutförd. Om du behöver köra en icke-blockerande " "utskriftsoperation anropar du PrintOperation::set_allow_async(). Observera att set_allow_async() inte " "stöds på alla plattformar, men signalen done kommer " "fortfarande sändas ut." #. (itstool) path: section/para #: C/index-in.docbook:5793 msgid "" "run() may return PrintOperation::Result::" "IN_PROGRESS. To track status and handle the result or error you " "need to implement signal handlers for the done and " "status_changed signals:" msgstr "" "run() kan returnera PrintOperation::" "Result::IN_PROGRESS. För att övervaka status och hantera " "resultatet eller fel behöver du implementera signalhanterare för signalerna " "done och status_changed:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5801 #, fuzzy, no-wrap msgid "" "\n" "// in class ExampleWindow's method...\n" "auto op = PrintOperation::create();\n" "// ...set up op...\n" "op->signal_done().connect(sigc::bind(sigc::mem_fun(\n" " *this, &ExampleWindow::on_printoperation_done), op));\n" "// run the op\n" msgstr "" "\n" "// i klassen ExampleWindows metod...\n" "auto op = PrintOperation::create();\n" "// ...konfigurera op...\n" "op->signal_done().connect(sigc::bind(sigc::mem_fun(\n" " *this, &ExampleWindow::on_printoperation_done), op));\n" "// kör op\n" #. (itstool) path: section/para #: C/index-in.docbook:5810 msgid "" "Second, check for an error and connect to the status_changed signal. For instance:" msgstr "" "Kontrollera sedan för fel och anslut till signalen status_changed. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5812 #, no-wrap msgid "" "\n" "void ExampleWindow::on_printoperation_done(Gtk::PrintOperation::Result result,\n" " const Glib::RefPtr<PrintOperation>& op)\n" "{\n" " if (result == Gtk::PrintOperation::Result::ERROR)\n" " //notify user\n" " else if (result == Gtk::PrintOperation::Result::APPLY)\n" " //Update PrintSettings with the ones used in this PrintOperation\n" "\n" " if (! op->is_finished())\n" " op->signal_status_changed().connect(sigc::bind(sigc::mem_fun(\n" " *this, &ExampleWindow::on_printoperation_status_changed), op));\n" "}\n" msgstr "" "\n" "void ExampleWindow::on_printoperation_done(Gtk::PrintOperation::Result result,\n" " const Glib::RefPtr<PrintOperation>& op)\n" "{\n" " if (result == Gtk::PrintOperation::Result::ERROR)\n" " //meddela användare\n" " else if (result == Gtk::PrintOperation::Result::APPLY)\n" " //Uppdatera PrintSettings med de som används i denna PrintOperation\n" "\n" " if (! op->is_finished())\n" " op->signal_status_changed().connect(sigc::bind(sigc::mem_fun(\n" " *this, &ExampleWindow::on_printoperation_status_changed), op));\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:5827 msgid "Finally, check the status. For instance," msgstr "Kontrollera slutligen status. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:5828 #, no-wrap msgid "" "\n" "void ExampleWindow::on_printoperation_status_changed(const Glib::RefPtr<PrintOperation>& op)\n" "{\n" " if (op->is_finished())\n" " //the print job is finished\n" " else\n" " //get the status with get_status() or get_status_string()\n" "\n" " //update UI\n" "}\n" msgstr "" "\n" "void ExampleWindow::on_printoperation_status_changed(const Glib::RefPtr<PrintOperation>& op)\n" "{\n" " if (op->is_finished())\n" " //utskriftsjobbet är klart\n" " else\n" " //få status med get_status() eller get_status_string()\n" "\n" " //uppdatera användargränssnitt\n" "}\n" #. (itstool) path: section/title #: C/index-in.docbook:5843 msgid "Export to PDF" msgstr "Exportera till PDF" #. (itstool) path: section/para #: C/index-in.docbook:5845 #, fuzzy msgid "" "The 'Print to file' option is available in the print dialog, without the " "need for extra implementation. However, it is sometimes useful to generate a " "pdf file directly from code. For instance," msgstr "" "Alternativet ”Skriv ut till fil” är tillgängligt i utskriftsdialogen, utan " "att någon extra implementation krävs. Det är dock ibland användbart att " "generera en pdf-fil direkt från kod. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:5848 #, fuzzy, no-wrap msgid "" "\n" "auto op = Gtk::PrintOperation::create();\n" "// ...set up op...\n" "op->set_export_filename(\"test.pdf\");\n" "auto res = op->run(Gtk::PrintOperation::Action::EXPORT);\n" msgstr "" "\n" "auto op = Gtk::PrintOperation::create();\n" "// ...konfigurera op...\n" "op->set_export_filename(\"test.pdf\");\n" "auto res = op->run(Gtk::PrintOperation::Action::EXPORT);\n" #. (itstool) path: section/title #: C/index-in.docbook:5858 msgid "Extending the print dialog" msgstr "Utöka utskriftsdialogen" #. (itstool) path: listitem/para #: C/index-in.docbook:5865 #, fuzzy msgid "" "Set the title of the tab via PrintOperation::" "set_custom_tab_label(), create a new widget and return it from " "the create_custom_widget signal handler. You'll probably " "want this to be a container widget, packed with some others." msgstr "" "Ställ in titeln för fliken via PrintOperation::" "set_custom_tab_label(), skapa en ny komponent och returnera den " "från signalhanteraren create_custom_widget. Du kommer " "troligen vilja att detta är en behållarkomponent som packats med några andra." #. (itstool) path: listitem/para #: C/index-in.docbook:5875 #, fuzzy msgid "" "Get the data from the widgets in the custom_widget_apply " "signal handler." msgstr "" "Få data från komponenterna i signalhanteraren custom_widget_apply." #. (itstool) path: section/para #: C/index-in.docbook:5860 msgid "You may add a custom tab to the print dialog: <_:itemizedlist-1/>" msgstr "" "Du kan lägga till en anpassad flik till utskriftsdialogen: <_:itemizedlist-1/" ">" #. (itstool) path: section/para #: C/index-in.docbook:5883 #, fuzzy msgid "" "Although the custom_widget_apply signal provides the " "widget you previously created, to simplify things you can keep the widgets " "you expect to contain some user input as class members. For example, let's " "say you have a Gtk::Entry called m_Entry as a member of your CustomPrintOperation " "class:" msgstr "" "Även om custom_widget_apply-signalen tillhandahåller " "komponenten du skapat tidigare kan du för att förenkla saker behålla " "komponenterna som du förväntar dig ska innehålla användarindata som " "klassmedlemmar. Om vi exempelvis säger att du har en Gtk::Entry med namnet m_Entry som en medlem i din " "CustomPrintOperation-klass:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5890 #, fuzzy, no-wrap msgid "" "\n" "Gtk::Widget* CustomPrintOperation::on_create_custom_widget()\n" "{\n" " set_custom_tab_label(\"My custom tab\");\n" "\n" " auto hbox = new Gtk::Box(Gtk::Orientation::HORIZONTAL, 8);\n" " hbox->set_margin(6);\n" "\n" " auto label = Gtk::make_managed<Gtk::Label>(\"Enter some text: \");\n" " hbox->append(*label);\n" "\n" " hbox->append(m_Entry);\n" "\n" " return hbox;\n" "}\n" "\n" "void CustomPrintOperation::on_custom_widget_apply(Gtk::Widget* /* widget */)\n" "{\n" " auto user_input = m_Entry.get_text();\n" " //...\n" "}\n" msgstr "" "\n" "Gtk::Widget* CustomPrintOperation::on_create_custom_widget()\n" "{\n" " set_custom_tab_label(\"Min anpassade flik\");\n" "\n" " auto hbox = new Gtk::Box(Gtk::Orientation::HORIZONTAL, 8);\n" " hbox->set_margin(6);\n" "\n" " auto label = Gtk::make_managed<Gtk::Label>(\"Mata in lite text: \");\n" " hbox->append(*label);\n" "\n" " hbox->append(m_Entry);\n" "\n" " return hbox;\n" "}\n" "\n" "void CustomPrintOperation::on_custom_widget_apply(Gtk::Widget* /* widget */)\n" "{\n" " auto user_input = m_Entry.get_text();\n" " //...\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:5913 msgid "The example in examples/book/printing/advanced demonstrates this." msgstr "Exemplet i examples/book/printing/advanced demonstrerar detta." #. (itstool) path: section/title #: C/index-in.docbook:5920 msgid "Preview" msgstr "Förhandsgranskning" #. (itstool) path: section/para #: C/index-in.docbook:5922 #, fuzzy msgid "" "The native GTK print dialog has a preview button, but you may also start a " "preview directly from an application:" msgstr "" "Den inhemska GTK-utskriftsdialogen har en knapp för förhandsgranskning, men " "du kan också starta en förhandsgranskning direkt från ett program:" #. (itstool) path: section/programlisting #: C/index-in.docbook:5926 #, no-wrap msgid "" "\n" "// in a class that inherits from Gtk::Window...\n" "auto op = PrintOperation::create();\n" "// ...set up op...\n" "op->run(Gtk::PrintOperation::Action::PREVIEW, *this);\n" msgstr "" "\n" "// i en klass som ärver från Gtk::Window...\n" "auto op = PrintOperation::create();\n" "// ...konfigurera op...\n" "op->run(Gtk::PrintOperation::Action::PREVIEW, *this);\n" #. (itstool) path: section/para #: C/index-in.docbook:5933 #, fuzzy msgid "" "On Unix, the default preview handler uses an external viewer program. On " "Windows, the native preview dialog will be shown. If necessary you may " "override this behavior and provide a custom preview dialog. See the example " "located in /examples/book/printing/advanced." msgstr "" "På Unix använder standardhanteraren för förhandsgranskning ett externt " "visningsprogram. På Windows kommer den inbyggda förhandsgranskningsdialogen " "visas. Om nödvändigt kan du åsidosätta detta beteende och tillhandahålla en " "anpassad förhandsgranskningsdialog. Se exemplet i /examples/book/printing/" "advanced." #. (itstool) path: section/title #: C/index-in.docbook:5943 C/index-in.docbook:5980 #, fuzzy #| msgid "Printing" msgid "PrintDialog" msgstr "Utskrift" #. (itstool) path: section/para #: C/index-in.docbook:5945 msgid "" "Since gtkmm 4.14 Gtk::PrintDialog is an alternative to Gtk::PrintOperation. " "PrintDialog uses the same PageSetup and PrintSettings classes as " "PrintOperation. The rendering with Cairo and Pango is " "also similar." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:5961 #, fuzzy msgid "" "The following example demonstrates how to print some input from a user " "interface using PrintOperation. It shows how to " "implement on_begin_print and on_draw_page, as well as how to track print status and update the print settings." msgstr "" "Följande exempel demonstrerar hur inmatning från ett användargränssnitt kan " "skrivas ut. Det visar hur man implementerar on_begin_print och on_draw_page, såväl som att spåra " "utskriftsstatus och uppdatera utskriftsinställningarna." #. (itstool) path: figure/title #: C/index-in.docbook:5969 msgid "Printing - Simple" msgstr "Utskrift - Enkel" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5971 #, fuzzy msgctxt "_" msgid "" "external ref='figures/printing_simple.png' " "md5='8e7f72103094230cafcd912cb6b34277'" msgstr "" "external ref='figures/printing.png' md5='d4565328475ec89edf5f2230cb3fc5d0'" #. (itstool) path: section/para #: C/index-in.docbook:5975 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:5982 #, fuzzy msgid "" "The following example demonstrates how to print some input from a user " "interface using PrintDialog. The user interface is " "similar to the previous example." msgstr "" "Följande exempel demonstrerar hur inmatning från ett användargränssnitt kan " "skrivas ut. Det visar hur man implementerar on_begin_print och on_draw_page, såväl som att spåra " "utskriftsstatus och uppdatera utskriftsinställningarna." #. (itstool) path: figure/title #: C/index-in.docbook:5989 #, fuzzy #| msgid "Printing - Simple" msgid "Printing - PrintDialog" msgstr "Utskrift - Enkel" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:5991 #, fuzzy msgctxt "_" msgid "" "external ref='figures/printing_printdialog.png' " "md5='131a217e90587b80335c230cace02a57'" msgstr "" "external ref='figures/printing.png' md5='d4565328475ec89edf5f2230cb3fc5d0'" #. (itstool) path: section/para #: C/index-in.docbook:5995 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:6002 msgid "Recently Used Documents" msgstr "Senast använda dokument" #. (itstool) path: chapter/para #: C/index-in.docbook:6004 msgid "" "gtkmm provides an easy way to manage recently " "used documents. This functionality is implemented in the Gtk::" "RecentManager class." msgstr "" "gtkmm tillhandahåller ett lätt sätt att hantera " "senast använda dokument. Denna funktionalitet implementeras i klassen " "Gtk::RecentManager." #. (itstool) path: chapter/para #: C/index-in.docbook:6008 #, fuzzy msgid "" "Each item in the list of recently used files is identified by its URI, and " "can have associated metadata. The metadata can be used to specify how the " "file should be displayed, a description of the file, its mime type, which " "application registered it, whether it's private to the registering " "application, and several other things." msgstr "" "Varje objekt i listan över senast använda filer identifieras av sin URI, och " "kan ha associerade metadata. Dessa metadata kan användas för att ange hur " "filen ska visas, en beskrivning av filen, dess mime-typ, vilket program som " "registrerat den, huruvida den är privat för det registrerande programmet, " "och flera andra saker." #. (itstool) path: section/title #: C/index-in.docbook:6017 msgid "RecentManager" msgstr "RecentManager" #. (itstool) path: section/para #: C/index-in.docbook:6018 msgid "" "RecentManager acts as a database of recently used " "files. You use this class to register new files, remove files from the list, " "or look up recently used files. There is one list of recently used files per " "user." msgstr "" "RecentManager agerar som en databas över senast " "använda filer. Du använder denna klass för att registrera nya filer, ta bort " "filer från listan, eller slå upp senast använda filer. Det finns en lista " "över senast använda filer per användare." #. (itstool) path: section/para #: C/index-in.docbook:6024 #, fuzzy msgid "" "You can create a new RecentManager, but you'll most " "likely just want to use the default one. You can get a reference to the " "default RecentManager with get_default()." msgstr "" "Du kan skapa en ny RecentManager, men du vill mest " "troligt helt enkelt använda den som används som standard. Du kan få en " "referens till standard-RecentManager med " "get_default()." #. (itstool) path: section/title #: C/index-in.docbook:6032 #, fuzzy msgid "Adding Items to the List of Recent Files" msgstr "Lägga till objekt i listan över senaste filer" #. (itstool) path: section/para #: C/index-in.docbook:6033 #, fuzzy msgid "" "To add a new file to the list of recent documents, in the simplest case, you " "only need to provide the URI. For example:" msgstr "" "För att lägga till en ny fil till listan över senaste dokument behöver du i " "det enklaste fallet bara tillhandahålla URI:n. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6037 #, no-wrap msgid "" "auto recent_manager = Gtk::RecentManager::get_default();\n" "recent_manager->add_item(uri);" msgstr "" "auto recent_manager = Gtk::RecentManager::get_default();\n" "recent_manager->add_item(uri);" #. (itstool) path: section/para #: C/index-in.docbook:6039 #, fuzzy msgid "" "If you want to register a file with metadata, you can pass a " "RecentManager::Data parameter to " "add_item(). The metadata that can be set on a " "particular file item is as follows:" msgstr "" "Om du vill registrera en fil med metadata kan du skicka med en " "RecentManager::Data-parameter till " "add_item(). Metadata som kan ställas in på ett " "specifikt filobjekt är följande:" #. (itstool) path: listitem/para #: C/index-in.docbook:6047 #, fuzzy msgid "" "app_exec: The command line to be used to launch this " "resource. This string may contain the \"f\" and \"u\" escape characters " "which will be expanded to the resource file path and URI respectively" msgstr "" "app_exec: Kommandoraden att använda för att köra denna " "resurs. Denna sträng kan innehålla kontrollsekvenserna \"f\" och \"u\" som " "kommer expanderas till resursens filsökväg respektive URI" #. (itstool) path: listitem/para #: C/index-in.docbook:6053 #, fuzzy msgid "" "app_name: The name of the application that registered the " "resource" msgstr "" "app_name: Namnet på programmet som registrerat resursen" #. (itstool) path: listitem/para #: C/index-in.docbook:6057 msgid "" "description: A short description of the resource as a " "UTF-8 encoded string" msgstr "" "description: En kort beskrivning av resursen som en UTF-8-" "kodad sträng" #. (itstool) path: listitem/para #: C/index-in.docbook:6061 #, fuzzy msgid "" "display_name: The name of the resource to be used for " "display as a UTF-8 encoded string" msgstr "" "display_name: Namnet på resursen att använda för visning " "som en UTF-8-kodad sträng" #. (itstool) path: listitem/para #: C/index-in.docbook:6065 #, fuzzy msgid "" "groups: A list of groups associated with this item. " "Groups are essentially arbitrary strings associated with a particular " "resource. They can be thought of as 'categories' (such as \"email\", " "\"graphics\", etc) or tags for the resource." msgstr "" "groups: En lista över grupper som är associerade med " "detta objekt. Grupper är i princip godtyckliga strängar associerade med en " "viss resurs. De kan tänkas på som ”kategorier” (som ”e-post”, ”grafik” o.s." "v.) eller taggar för resursen." #. (itstool) path: listitem/para #: C/index-in.docbook:6071 msgid "" "is_private: Whether this resource should be visible only " "to applications that have registered it or not" msgstr "" "is_private: huruvida denna resurs endast ska vara synlig " "för program som har registrerat den eller inte" #. (itstool) path: listitem/para #: C/index-in.docbook:6075 msgid "mime_type: The MIME type of the resource" msgstr "mime_type: MIME-typen för resursen" #. (itstool) path: section/para #: C/index-in.docbook:6078 msgid "" "In addition to adding items to the list, you can also look up items from the " "list and modify or remove items." msgstr "" "Utöver att lägga till objekt till listan kan du också slå upp objekt i " "listan och ändra eller ta bort objekt." #. (itstool) path: section/title #: C/index-in.docbook:6085 msgid "Looking up Items in the List of Recent Files" msgstr "Slå upp objekt i listan över senaste filer" #. (itstool) path: section/para #: C/index-in.docbook:6086 #, fuzzy msgid "" "To look up recently used files, RecentManager " "provides several functions. To look up a specific item by its URI, you can " "use the lookup_item() function, which will return a " "RecentInfo class. If the specified URI did not exist " "in the list of recent files, lookup_item() throws a " "RecentManagerError exception. For example:" msgstr "" "RecentManager tillhandahåller flera funktioner för " "att slå upp senast använda filer. För att slå upp ett visst objekt enligt " "dess URI kan du använda funktionen lookup_item(), " "vilken kommer returnera en RecentInfo-klass. Om den " "angivna URI:n inte finns i listan över senaste filer kommer " "lookup_item() kasta ett " "RecentManagerError-undantag. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6095 #, fuzzy, no-wrap msgid "" "Glib::RefPtr<Gtk::RecentInfo> info;\n" "try\n" "{\n" " info = recent_manager->lookup_item(uri);\n" "}\n" "catch(const Gtk::RecentManagerError& ex)\n" "{\n" " std::cerr << \"RecentManagerError: \" << ex.what() << std::endl;\n" "}\n" "if (info)\n" "{\n" " // item was found\n" "}" msgstr "" "Glib::RefPtr<Gtk::RecentInfo> info;\n" "try\n" "{\n" " info = recent_manager->lookup_item(uri);\n" "}\n" "catch(const Gtk::RecentManagerError& ex)\n" "{\n" " std::cerr << \"RecentManagerError: \" << ex.what() << std::endl;\n" "}\n" "if (info)\n" "{\n" " // objektet hittades\n" "}" #. (itstool) path: section/para #: C/index-in.docbook:6108 #, fuzzy msgid "" "A RecentInfo object is essentially an object " "containing all of the metadata about a single recently-used file. You can " "use this object to look up any of the properties listed above." msgstr "" "Ett RecentInfo-objekt är i princip ett objekt som " "innehåller alla metadata om en ensam senast använd fil. Du kan använda detta " "objekt för att slå upp vilken som helst av egenskaperna listade ovan." #. (itstool) path: section/para #: C/index-in.docbook:6114 #, fuzzy msgid "" "If you don't want to look for a specific URI, but instead want to get a list " "of all recently used items, RecentManager provides " "the get_items() function. The return value of this " "function is a std::vector of all recently used files. " "The following code demonstrates how you might get a list of recently used " "files:" msgstr "" "Om du inte vill söka en viss URI, utan i stället vill få en lista över alla " "senast använda filer tillhandahåller RecentManager " "funktionen get_items(). Returvärdet för denna " "funktion är en std::vector med alla senast använda " "filer. Följande kod demonstrerar hur du kan få en lista över senast använda " "filer:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6122 #, no-wrap msgid "auto info_list = recent_manager->get_items();" msgstr "auto info_list = recent_manager->get_items();" #. (itstool) path: section/para #: C/index-in.docbook:6123 #, fuzzy msgid "" "The maximum age of items in the recently used files list can be set with " "Gtk::Settings::property_gtk_recent_files_max_age(). " "Default value: 30 days." msgstr "" "Den högsta åldern på objekt i listan över senast använda filer kan ställas " "in med Gtk::Settings::property_gtk_recent_files_max_age(). Standardvärde: 30 dagar." #. (itstool) path: section/title #: C/index-in.docbook:6131 #, fuzzy msgid "Modifying the List of Recent Files" msgstr "Modifiera listan över senast använda filer" #. (itstool) path: section/para #: C/index-in.docbook:6132 #, fuzzy msgid "" "There may be times when you need to modify the list of recent files. For " "instance, if a file is moved or renamed, you may need to update the file's " "location in the recent files list so that it doesn't point to an incorrect " "location. You can update an item's location by using " "move_item()." msgstr "" "Det kan finnas tillfällen när du behöver ändra listan över senast använda " "filer. Om exempelvis en fil flyttas eller byter namn så kan du behöva " "uppdatera filens plats i listan över senast använda filer så den inte pekar " "på en ogiltig plats. Du kan uppdatera ett objekts plats genom att använda " "move_item()." #. (itstool) path: section/para #: C/index-in.docbook:6139 #, fuzzy msgid "" "In addition to changing a file's URI, you can also remove items from the " "list, either one at a time or by clearing them all at once. The former is " "accomplished with remove_item(), the latter with " "purge_items()." msgstr "" "Utöver att ändra en fils URI kan du också ta bort objekt från listan, " "antingen ett åt gången eller genom att rensa bort alla samtidigt. Det " "tidigare åstadkoms med remove_item(), det senare " "med purge_items()." #. (itstool) path: note/para #: C/index-in.docbook:6146 #, fuzzy msgid "" "The functions move_item(), " "remove_item() and purge_items() have no effect on the actual files that are referred to by the " "URIs, they only modify the list of recent files." msgstr "" "Funktionerna move_item(), " "remove_item() och purge_items() påverkar inte de faktiska filerna som URI:erna hänvisar till, de " "ändrar bara listan över senaste filer." #. (itstool) path: section/title #: C/index-in.docbook:6158 #, fuzzy #| msgid "FileChooserDialog" msgid "FileChooser and FileDialog" msgstr "FileChooserDialog" #. (itstool) path: section/para #: C/index-in.docbook:6160 msgid "" "FileChooser is an interface that can be implemented " "by widgets displaying a list of files. gtkmm " "provides three built-in implementations for choosing recent files or other " "files: FileChooserWidget, " "FileChooserDialog, and FileChooserNative." msgstr "" "FileChooser är ett gränssnitt som kan implementeras " "av komponenter som visar en lista med filer. gtkmm tillhandahåller tre inbyggda implementationer för att välja " "senaste filer eller andra filer: FileChooserWidget, " "FileChooserDialog och FileChooserNative." #. (itstool) path: section/para #: C/index-in.docbook:6169 #, fuzzy msgid "" "FileChooserWidget is a simple widget for displaying a " "list of recently used files or other files. FileChooserWidget is the basic building block for FileChooserDialog, but you can embed it into your user interface if you want to." msgstr "" "FileChooserWidget är ett enkelt gränssnitt för att " "visa en lista med senast använda filer eller andra filer. " "FileChooserWidget är grundblocket för " "FileChooserDialog, men du kan bädda in den i ditt " "användargränssnitt om du vill." #. (itstool) path: note/para #: C/index-in.docbook:6176 msgid "" "FileChooser and the classes that implement it are " "deprecated since gtkmm 4.10. They have been " "replaced by FileDialog, which is available since " "gtkmm 4.10." msgstr "" #. (itstool) path: section/title #: C/index-in.docbook:6182 #, fuzzy #| msgid "Simple FileChooserDialog example" msgid "Simple FileDialog example" msgstr "Enkelt FileChooserDialog-exempel" #. (itstool) path: section/para #: C/index-in.docbook:6184 #, fuzzy msgid "" "Shown below is a simple example of how to use the FileDialog class in a program. This simple program has a menubar with a " "File Dialog menu item. When you select this menu " "item, a dialog pops up showing a list of files. If you select " "Recent in the sidebar, the list of recently used " "files is shown." msgstr "" "Nedan visas ett enkelt exempel på hur du använder " "FileChooserDialog-klassen i ett program. Detta enkla " "program har en menyrad med ett menyobjekt File Chooser Dialog. När du väljer detta menyobjekt poppar en dialogruta upp som " "visar en fillista. Om du väljer Recent i " "sidopanelen visas listan över senast använda filer." #. (itstool) path: note/para #: C/index-in.docbook:6194 #, fuzzy msgid "" "If this is the first time you're using a program that uses the Recent Files " "framework, the dialog may be empty at first. Otherwise it should show the " "list of recently used documents registered by other applications." msgstr "" "Om detta är den första gången du använder ett program som använder senaste " "filer-ramverket kan dialogrutan till en början vara tom. I andra fall bör " "den visa listan över senast använda dokument som registrerats av andra " "program." #. (itstool) path: section/para #: C/index-in.docbook:6201 #, fuzzy msgid "" "After selecting the File Dialog menu item and the " "Recent sidebar item, you should see something " "similar to the following window." msgstr "" "Efter att ha valt menyobjektet File Chooser Dialog och sidopanelsobjektet Recent bör du " "se något liknande följande fönster." #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:6207 #, fuzzy msgctxt "_" msgid "" "external ref='figures/recentfiles.png' md5='2ca280c98b5c8822ad48ca40f7ce0bb4'" msgstr "" "external ref='figures/recentfiles.png' md5='2ca280c98b5c8822ad48ca40f7ce0bb4'" #. (itstool) path: section/para #: C/index-in.docbook:6209 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:6210 msgid "" "The constructor for ExampleWindow creates the menu " "and the toolbar using Builder (see for more information). It then adds " "the menu and the toolbar to the window." msgstr "" "Konstruktorn för ExampleWindow skapar menyn och " "verktygsfältet med Builder (se for mer information). Den lägger " "sedan till menyn och verktygsfältet till fönstret." #. (itstool) path: section/title #: C/index-in.docbook:6218 msgid "Filtering Files" msgstr "Filtrera filer" #. (itstool) path: section/para #: C/index-in.docbook:6219 #, fuzzy msgid "" "For any of the FileChooser classes, if you don't wish " "to display all of the items in the list of files, you can filter the list to " "show only those that you want. You can filter the list with the help of the " "FileFilter class. This class allows you to filter " "files by their name (add_pattern()), or their mime " "type (add_mime_type())." msgstr "" "För alla FileChooser-klasser kan du filtrera listan " "så att bara de objekt som du vill se visas i fillistan. Du kan filtrera " "listan med hjälp av FileFilter-klassen. Denna klass " "låter dig filtrera filer efter deras namn (add_pattern()) eller deras mime-typ (add_mime_type())." #. (itstool) path: section/para #: C/index-in.docbook:6228 #, fuzzy msgid "" "After you've created and set up the filter to match only the items you want, " "you can apply a filter to a chooser widget with the FileChooser::" "add_filter() function." msgstr "" "Efter att du skapat och konfigurerat filtret så att det bara matchar de " "objekt du vill ha kan du tillämpa ett filter till en väljarkomponent med " "funktionen FileChooser::add_filter()." #. (itstool) path: chapter/title #: C/index-in.docbook:6238 msgid "Keyboard Events" msgstr "Tangentbordshändelser" #. (itstool) path: chapter/para #: C/index-in.docbook:6239 #, fuzzy msgid "" "Event signals differ in some ways from other signals. These differences are " "described in the Event signals " "section in the appendix. Here we will use keyboard events to show how events " "can be used in a program." msgstr "" "Händelsesignaler skiljer sig på några sätt från andra signaler. Dessa " "skillnader beskrivs i avsnittet Händelsesignaler i bilagan. Här kommer vi använda " "tangentbordshändelser för att visa hur händelser kan användas i ett program." #. (itstool) path: section/title #: C/index-in.docbook:6246 msgid "Overview" msgstr "Översikt" #. (itstool) path: section/para #: C/index-in.docbook:6248 #, fuzzy msgid "" "Whenever you press or release a key, an event is emitted. You can add an " "event controller and connect a signal handler to handle such events." msgstr "" "Närhelst du trycker på eller släpper en tangent sänds en händelse ut. Du kan " "lägga till en händelsekontroll och ansluta en signalhanterare för att " "hantera sådana händelser." #. (itstool) path: section/para #: C/index-in.docbook:6252 #, fuzzy msgid "" "The event signal handler will receive arguments that depend on the type of " "event. For key press events the arguments are (guint " "keyval, guint keycode, " "Gdk::ModifierType state). As described in " "the appendix, the key press event " "signal handler returns a bool value, to indicate that the " "signal is fully handled (true) or allow event propagation " "(false)." msgstr "" "Händelsesignalhanteraren kommer ta emot argument som beror på händelsetypen. " "För tangenttryckshändelser är argumenten (guint " "keyval, guint keycode, " "Gdk::ModifierType state). Som beskrivet i " "bilagan, returnerar " "signalhanteraren för tangenttryckshändelsen ett bool-värde för " "att indikera att signalen hanteras fullständigt (true) " "eller tillåter händelsespridning (false)." #. (itstool) path: section/para #: C/index-in.docbook:6261 #, fuzzy msgid "" "To determine which key was pressed or released, you read the value of the " "keyval argument and compare it with a constant in the " " <gdk/gdkkeysyms.h> header " "file. The states of modifier keys (shift, ctrl, etc.) are available as bit-" "flags in state." msgstr "" "För att avgöra vilken tangent som trycktes ned eller släpptes läser du " "värdet på argumentet keyval och jämför det med en " "konstant i header-filen <gdk/gdkkeysyms.h>. Tillstånden för modifierartangenter (skift, ctrl o.s.v.) " "finns tillgängliga som bitflaggor i state." #. (itstool) path: section/para #: C/index-in.docbook:6269 C/index-in.docbook:9240 msgid "Here's a simple example:" msgstr "Här är ett enkelt exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6272 #, fuzzy, no-wrap msgid "" "\n" "bool MyClass::on_key_pressed(guint keyval, guint, Gdk::ModifierType state)\n" "{\n" " if (keyval == GDK_KEY_1 &&\n" " (state & (Gdk::ModifierType::SHIFT_MASK | Gdk::ModifierType::CONTROL_MASK |\n" " Gdk::ModifierType::ALT_MASK)) == Gdk::ModifierType::ALT_MASK)\n" " {\n" " handle_alt_press();\n" " return true;\n" " }\n" " return false;\n" "}\n" "\n" "// in MyClass constructor\n" "auto controller = Gtk::EventControllerKey::create();\n" "controller->signal_key_pressed().connect(\n" " sigc::mem_fun(*this, &MyClass::on_key_pressed), false);\n" "add_controller(controller);\n" msgstr "" "\n" "bool MyClass::on_key_pressed(guint keyval, guint, Gdk::ModifierType state)\n" "{\n" " if (keyval == GDK_KEY_1 &&\n" " (state & (Gdk::ModifierType::SHIFT_MASK | Gdk::ModifierType::CONTROL_MASK |\n" " Gdk::ModifierType::ALT_MASK)) == Gdk::ModifierType::ALT_MASK)\n" " {\n" " handle_alt_press();\n" " return true;\n" " }\n" " return false;\n" "}\n" "\n" "// i MyClass-konstruktor\n" "auto controller = Gtk::EventControllerKey::create();\n" "controller->signal_key_pressed().connect(\n" " sigc::mem_fun(*this, &MyClass::on_key_pressed), false);\n" "add_controller(controller);\n" #. (itstool) path: section/para #: C/index-in.docbook:6295 msgid "" "In this example there are three keyboard shortcuts: Alt+1 selects the first radio button, Alt+2 selects the second one, and the Esc key hides (closes) the window." msgstr "" "I detta exempel finns det tre tangentbordsgenvägar: Alt+1 väljer den första radioknappen, Alt+2 väljer den andra, och Esc döljer " "(stänger) fönstret." #. (itstool) path: figure/title #: C/index-in.docbook:6303 #, fuzzy msgid "Keyboard Events - Simple" msgstr "Tangentbordshändelser - Enkelt" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:6305 #, fuzzy msgctxt "_" msgid "" "external ref='figures/keyboardevents_simple.png' " "md5='59e69135f7b646af1a9f528eba13a5df'" msgstr "" "external ref='figures/keyboardevents_simple.png' " "md5='59e69135f7b646af1a9f528eba13a5df'" #. (itstool) path: section/para #: C/index-in.docbook:6309 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:6314 #, fuzzy msgid "Event Propagation" msgstr "Händelsespridning" #. (itstool) path: listitem/simpara #: C/index-in.docbook:6320 C/index-in.docbook:9280 #, fuzzy msgid "Capture phase - runs from the toplevel down to the event widget." msgstr "Fångstfas - körs från toppnivån ner till händelsekomponenten." #. (itstool) path: listitem/simpara #: C/index-in.docbook:6321 C/index-in.docbook:9281 #, fuzzy msgid "Target phase - runs only on the event widget." msgstr "Målfas - körs bara på händelsekomponenten." #. (itstool) path: listitem/simpara #: C/index-in.docbook:6322 C/index-in.docbook:9282 #, fuzzy msgid "Bubble phase - runs from the event widget up to the toplevel." msgstr "Bubbelfas - körs från händelsekomponenten upp till toppnivån." #. (itstool) path: section/para #: C/index-in.docbook:6316 #, fuzzy msgid "" "As described in the appendix event signals are propagated in 3 phases: <_:orderedlist-1/>" msgstr "" "Som beskrivs i bilagan " "sprids händelsesignaler i 3 faser: <_:orderedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:6325 #, fuzzy msgid "" "A keyboard event is first sent to the toplevel window (Gtk::" "Window), where it will be checked for any keyboard shortcuts " "that may be set (accelerator keys and mnemonics, used for selecting menu " "items from the keyboard). After this (and assuming the event wasn't " "handled), it is propagated down until it reaches the widget which has " "keyboard focus. The event will then propagate up until it reaches the top-" "level widget, or until you stop the propagation by returning true from an event handler." msgstr "" "En tangentbordshändelse skickas först till toppnivåfönstret (Gtk::" "Window), där den kommer kontrolleras för tangentbordsgenvägar " "som kan ha satts (snabbtangenter och kortkommandon, använda för att välja " "menyobjekt från tangentbordet). Efter detta (och om vi antar att händelsen " "inte hanterats), så sprids den nedåt tills den når komponenten som har " "tangentbordsfokus. Händelsen kommer sedan spridas uppåt tills den når " "toppnivåkomponenten, eller till du stoppar spridningen genom att returnera " "true från en händelsehanterare." #. (itstool) path: section/para #: C/index-in.docbook:6335 #, fuzzy msgid "" "Notice, that after canceling an event, no other function will be called " "(even if it is from the same widget)." msgstr "" "Observera att efter att ha avbrutit en händelse kommer ingen annan funktion " "att anropas (även om den är från samma komponent)." #. (itstool) path: section/para #: C/index-in.docbook:6343 #, fuzzy msgid "" "In this example there are 9 EventControllerKeys, 3 in " "each of a Gtk::Window, a Gtk::Box and a Gtk::Label. In each of the widgets " "there is one event controller for each propagation phase." msgstr "" "I detta exempel finns det 9 EventControllerKey, 3 i " "varje av ett Gtk::Window, en Gtk::Box och en Gtk::Label. I var och en av " "komponenterna finns en händelsekontroll för varje spridningsfas." #. (itstool) path: section/para #: C/index-in.docbook:6349 #, fuzzy msgid "" "The purpose of this example is to show the steps the event takes when it is " "emitted." msgstr "" "Syftet med detta exempel är att visa stegen som händelsen tar när den sänds " "ut." #. (itstool) path: section/para #: C/index-in.docbook:6352 #, fuzzy msgid "" "When you write in the label, a key press event will be emitted, which will " "go first, in the capture phase, to the toplevel window (Gtk::" "Window), then down to its child, the box, then to the box's " "child, the label with the keyboard focus. In the target phase the event goes " "only to the widget with the keyboard focus (the label). In the bubble phase " "the event goes first to the widget with the keyboard focus (the label), then " "to its parent (the box), then to the box's parent (the window). If the event " "propagates all the way down to the label and then up to the window without " "being stopped, the text you're writing will appear in the Label above the Label you're writing in." msgstr "" "När du skriver i etiketten kommer en tangenttryckshändelse sändas ut, vilken " "först i fångstfasen går till toppnivåfönstret (Gtk::Window), sedan till dess underordnade box, sedan till boxens " "underordnade, etiketten med tangentbordsfokus. I målfasen går händelsen " "endast till komponenten med tangentbordsfokus (etiketten). I bubbelfasen går " "händelsen först till komponenten med tangentbordsfokus (etiketten), sedan " "till dess överordnade (boxen). sedan till boxens överordnade (fönstret). Om " "händelsen sprids hela vägen till etiketten och sedan upp till fönstret utan " "att stoppas kommer texten du skriver dyka upp i den Label som är ovanför den Label du skriver i." #. (itstool) path: figure/title #: C/index-in.docbook:6367 #, fuzzy msgid "Keyboard Events - Event Propagation" msgstr "Tangentbordshändelser - Händelsespridning" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:6369 #, fuzzy msgctxt "_" msgid "" "external ref='figures/keyboardevents_propagation.png' " "md5='4250a1b17c413f3243cf11485e7a7bb9'" msgstr "" "external ref='figures/keyboardevents_propagation.png' " "md5='4250a1b17c413f3243cf11485e7a7bb9'" #. (itstool) path: section/para #: C/index-in.docbook:6373 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:6379 #, fuzzy msgid "Timeouts, I/O and Idle Functions" msgstr "Timeout, I/O och inaktivitetsfunktioner" #. (itstool) path: section/title #: C/index-in.docbook:6382 #, fuzzy msgid "Timeouts" msgstr "Timeout" #. (itstool) path: section/para #: C/index-in.docbook:6384 #, fuzzy msgid "" "You may be wondering how to make gtkmm do useful " "work while it's idling along. Happily, you have several options. Using the " "following methods you can create a timeout method that will be called every " "few milliseconds." msgstr "" "Du kanske funderar hur du kan få gtkmm att göra " "något nyttigt medan det är inaktivt. Lyckligtvis har du flera alternativ. " "Med de följande metoderna kan du skapa en timeout-metod som kommer anropas " "med några millisekunders intervall." #. (itstool) path: section/programlisting #: C/index-in.docbook:6390 #, fuzzy, no-wrap msgid "" "\n" "sigc::connection Glib::SignalTimeout::connect(const sigc::slot<bool()>& slot,\n" " unsigned int interval, int priority = Glib::PRIORITY_DEFAULT);\n" msgstr "" "\n" "sigc::connection Glib::SignalTimeout::connect(const sigc::slot<bool()>& slot,\n" " unsigned int interval, int priority = Glib::PRIORITY_DEFAULT);\n" #. (itstool) path: section/para #: C/index-in.docbook:6395 #, fuzzy msgid "" "The first argument is a slot you wish to have called " "when the timeout occurs. The second argument is the number of milliseconds " "between calls to that method. You receive a sigc::connection object that can be used to deactivate the connection using its " "disconnect() method:" msgstr "" "Det första argumentet är en slot som du vill ha " "anropad när timeouten inträffar. Det andra argumentet är antal millisekunder " "mellan anrop till den metoden. Du erhåller ett sigc::connection-objekt som kan användas för att inaktivera anslutningen med dess " "disconnect()-metod:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6403 #, fuzzy, no-wrap msgid "" "\n" "my_connection.disconnect();\n" msgstr "" "\n" "my_connection.disconnect();\n" #. (itstool) path: section/para #: C/index-in.docbook:6407 #, fuzzy msgid "" "Another way of destroying the connection is your signal handler. It has to " "be of the type sigc::slot<bool()>. As you see " "from the definition your signal handler has to return a value of the type " "bool. A definition of a sample method might look like " "this:" msgstr "" "Ett annat sätt att förstöra anslutningen är din signalhanterare. Den måste " "vara av typen sigc::slot<bool()>. Som du kan se " "från definitionen måste din signalhanterare returnera ett värde av typen " "bool. En definition av en exempelmetod kan se ut så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6415 #, fuzzy, no-wrap msgid "" "\n" "bool MyCallback() { std::cout << \"Hello World!\\n\" << std::endl; return true; }\n" msgstr "" "\n" "bool MyCallback() { std::cout << \"Hej världen!\\n\" << std::endl; return true; }\n" #. (itstool) path: section/para #: C/index-in.docbook:6419 #, fuzzy msgid "" "You can stop the timeout method by returning false from " "your signal handler. Therefore, if you want your method to be called " "repeatedly, it should return true." msgstr "" "Du kan stoppa timeoutmetoden genom att returnera false " "från din signalhanterare. Om du vill att din method ska anropas upprepat bör " "den därför returnera true." #. (itstool) path: section/para #: C/index-in.docbook:6425 msgid "Here's an example of this technique:" msgstr "Här är ett exempel på denna teknik:" #. (itstool) path: section/para #: C/index-in.docbook:6429 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:6434 #, fuzzy msgid "Monitoring I/O" msgstr "Övervaka I/O" #. (itstool) path: section/para #: C/index-in.docbook:6436 #, fuzzy msgid "" "A nifty feature of Glib (one of the libraries underlying gtkmm) is the ability to have it check for data on a file descriptor " "for you. This is especially useful for networking applications. The " "following method is used to do this:" msgstr "" "En häftig funktion i Glib (ett av biblioteken bakom gtkmm) är förmågan att få det att kontrollera data på en " "filbeskrivare för dig. Detta är speciellt användbart för nätverksprogram. " "Följande metod används för att göra detta:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6443 #, fuzzy, no-wrap msgid "" "\n" "sigc::connection Glib::SignalIO::connect(const sigc::slot<bool(Glib::IOCondition)>& slot,\n" " Glib::PollFD::fd_t fd, Glib::IOCondition condition,\n" " int priority = Glib::PRIORITY_DEFAULT);\n" msgstr "" "\n" "sigc::connection Glib::SignalIO::connect(const sigc::slot<bool(Glib::IOCondition)>& slot,\n" " Glib::PollFD::fd_t fd, Glib::IOCondition condition,\n" " int priority = Glib::PRIORITY_DEFAULT);\n" #. (itstool) path: section/para #: C/index-in.docbook:6449 #, fuzzy msgid "" "The first argument is a slot you wish to have called when the specified " "event (see argument 3) occurs on the file descriptor you specify using " "argument two. Argument three may be one or more (using |) " "of:" msgstr "" "Det första argumentet är ett fack som du vill ska anropas när den angivna " "händelsen (se argument 3) inträffar på filbeskrivaren du anger med argument " "2. Argument 3 kan vara en eller flera (med |) av:" #. (itstool) path: listitem/para #: C/index-in.docbook:6458 #, fuzzy msgid "" "Glib::IOCondition::IO_IN - Call your method when there is data ready for " "reading on your file descriptor." msgstr "" "Glib::IOCondition::IO_IN - Anropa din metod när det finns data redo för " "läsning på din filbeskrivare." #. (itstool) path: listitem/para #: C/index-in.docbook:6464 #, fuzzy msgid "" "Glib::IOCondition::IO_OUT - Call your method when the file descriptor is " "ready for writing." msgstr "" "Glib::IOCondition::IO_OUT - Anropa din metod när filbeskrivaren är redo för " "skrivning." #. (itstool) path: listitem/para #: C/index-in.docbook:6470 #, fuzzy msgid "" "Glib::IOCondition::IO_PRI - Call your method when the file descriptor has " "urgent data to be read." msgstr "" "Glib::IOCondition::IO_PRI - Anropa din metod när filbeskrivaren har " "brådskande data för läsning." #. (itstool) path: listitem/para #: C/index-in.docbook:6475 #, fuzzy msgid "" "Glib::IOCondition::IO_ERR - Call your method when an error has occurred on " "the file descriptor." msgstr "" "Glib::IOCondition::IO_ERR - Anropa din metod när ett fel har inträffat på " "filbeskrivaren." #. (itstool) path: listitem/para #: C/index-in.docbook:6480 #, fuzzy msgid "" "Glib::IOCondition::IO_HUP - Call your method when hung up (the connection " "has been broken usually for pipes and sockets)." msgstr "" "Glib::IOCondition::IO_HUP - Anropa din metod när anslutningen läggs på " "(anslutningen har brutits, vanligen för rör och uttag)." #. (itstool) path: section/para #: C/index-in.docbook:6486 #, fuzzy msgid "" "The return value is a sigc::connection that may be " "used to stop monitoring this file descriptor using its " "disconnect() method. The slot signal handler should be declared as follows:" msgstr "" "Returvärdet är en sigc::connection som kan användas " "för att sluta övervaka denna filbeskrivare med dess " "disconnect()-metod. slot-" "signalhanteraren ska deklareras enligt följande:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6492 #, fuzzy, no-wrap msgid "" "\n" "bool input_callback(Glib::IOCondition condition);\n" msgstr "" "\n" "bool input_callback(Glib::IOCondition condition);\n" #. (itstool) path: section/para #: C/index-in.docbook:6496 #, fuzzy msgid "" "where condition is as specified above. As usual the " "slot is created with sigc::mem_fun() (for a member " "method of an object), or sigc::ptr_fun() (for a " "function). A lambda expression can be used, if you don't need the automatic " "disconnection that sigc::mem_fun() provides when the " "object goes out of scope." msgstr "" "där condition är som beskrivet ovan. Som vanligt " "skapas facket med sigc::mem_fun() (för en medlemsmetod " "för ett objekt), eller sigc::ptr_fun() (för en " "funktion). Ett lambdauttryck kan användas om du inte behöver den automatiska " "frånkopplingen som sigc::mem_fun() tillhandahåller då " "objektet lämnar räckvidden." #. (itstool) path: section/para #: C/index-in.docbook:6505 #, fuzzy msgid "" "A little example follows. To use the example just execute it from a " "terminal; it doesn't create a window. It will create a pipe named " "testfifo in the current directory. Then start another " "shell and execute echo \"Hello\" > testfifo. The " "example will print each line you enter until you execute echo \"Q\" " "> testfifo." msgstr "" "Ett litet exempel följer. För att använda exemplet kör du det bara från en " "terminal, det skapar inget fönster. Det kommer skapa ett rör med namnet " "testfifo i aktuell katalog. Starta sedan ett annat skal " "och exekvera echo \"Hello\" > testfifo. Exemplet " "kommer skriva ut varje rad som du matar in, tills du exekverar echo " "\"Q\" > testfifo." #. (itstool) path: section/para #: C/index-in.docbook:6514 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:6519 #, fuzzy msgid "Idle Functions" msgstr "Inaktivitetsfunktioner" #. (itstool) path: section/para #: C/index-in.docbook:6521 msgid "" "If you want to specify a method that gets called when nothing else is " "happening, use the following:" msgstr "" "Om du vill ange en metod som anropas när inget annat händer använder du " "följande:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6525 #, fuzzy, no-wrap msgid "" "\n" "sigc::connection Glib::SignalIdle::connect(const sigc::slot<bool()>& slot,\n" " int priority = Glib::PRIORITY_DEFAULT_IDLE);\n" msgstr "" "\n" "sigc::connection Glib::SignalIdle::connect(const sigc::slot<bool()>& slot,\n" " int priority = Glib::PRIORITY_DEFAULT_IDLE);\n" #. (itstool) path: section/para #: C/index-in.docbook:6530 #, fuzzy msgid "" "This causes gtkmm to call the specified method " "whenever nothing else is happening. You can add a priority (lower numbers " "are higher priorities). There are two ways to remove the signal handler: " "calling disconnect() on the sigc::" "connection object, or returning false in the " "signal handler, which should be declared as follows:" msgstr "" "Detta får gtkmm att anropa den angivna metoden " "när inget annat händer. Du kan lägga till en prioritet (lägre tal har högre " "prioritet). Det finns två sätt att ta bort signalhanteraren: anropa " "disconnect()sigc::connection-objektet, eller returnera false i " "signalhanteraren, vilket bör deklareras enligt följande:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6539 #, no-wrap msgid "" "\n" "bool idleFunc();\n" msgstr "" "\n" "bool idleFunc();\n" #. (itstool) path: section/para #: C/index-in.docbook:6543 msgid "" "Since this is very similar to the methods above this explanation should be " "sufficient to understand what's going on. However, here's a little example:" msgstr "" "Eftersom detta är väldigt likt metoderna ovan bör denna förklaring räcka för " "att förstå vad som pågår. Här kommer dock ett litet exempel:" #. (itstool) path: section/para #: C/index-in.docbook:6548 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:6550 #, fuzzy msgid "" "This example points out the difference of idle and timeout methods a little. " "If you need methods that are called periodically, and speed is not very " "important, then you want timeout methods. If you want methods that are " "called as often as possible (like calculating a fractal in background), then " "use idle methods." msgstr "" "Detta exempel pekar på skillnaden mellan inaktivitets- och timeout-metoder " "lite grann. Om du behöver metoder som anropas med jämna intervall, och " "hastighet inte är så viktigt, så vill du ha timeout-metoder. Om du vill ha " "metoder som anropas så ofta som möjligt (som att beräkna en fraktal i " "bakgrunden), så använd inaktivitetsmetoder." #. (itstool) path: section/para #: C/index-in.docbook:6558 #, fuzzy msgid "" "Try executing the example and increasing the system load. The upper progress " "bar will increase steadily; the lower one will slow down." msgstr "" "Försök köra exemplet och öka systemets belastning. Den övre " "förloppsindikatorn kommer öka stadigt, den nedre kommer sakta ner." #. (itstool) path: chapter/title #: C/index-in.docbook:6568 msgid "Memory management" msgstr "Minneshantering" #. (itstool) path: section/title #: C/index-in.docbook:6574 msgid "Normal C++ memory management" msgstr "Vanlig C++-minneshantering" #. (itstool) path: section/para #: C/index-in.docbook:6576 #, fuzzy msgid "" "gtkmm allows the programmer to control the " "lifetime (that is, the construction and destruction) of any widget in the " "same manner as any other C++ object. This flexibility allows you to use " "new and delete to create and destroy " "objects dynamically or to use regular class members (that are destroyed " "automatically when the class is destroyed) or to use local instances (that " "are destroyed when the instance goes out of scope). This flexibility is not " "present in some C++ GUI toolkits, which restrict the programmer to only a " "subset of C++'s memory management features." msgstr "" "gtkmm tillåter programmeraren att styra livstiden " "(det vill säga konstruktionen och förstörandet) av alla komponenter på samma " "sätt som andra C++-objekt. Denna flexibilitet låter dig använda " "new och delete för att skapa och " "förstöra objekt dynamiskt eller använda vanliga klassmedlemmar (som förstörs " "automatiskt när klassen förstörs) eller använda lokala instanser (som " "förstörs när instansen lämnar räckvidden). Denna flexibilitet finns inte i " "vissa C++-GUI-verktygslådor, vilket begränsar programmeraren till bara en " "delmängd av C++:s minneshanteringsfunktioner." #. (itstool) path: section/para #: C/index-in.docbook:6587 msgid "" "An important difference in gtkmm-4.0 vs. older " "versions is that a C++ widgetʼs destruction no longer causes the widget to " "be destroyed if itʼs within a parent; in that case the C GtkWidget stays " "alive. If you had relied on that behavior in an older version, in " "gtkmm-4.0 you must now remove the widget from its " "parent first. See Changes in " "gtkmm-4.0." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:6594 msgid "Here are some examples of normal C++ memory management:" msgstr "Här är några exempel på vanlig C++-minneshantering:" #. (itstool) path: section/title #: C/index-in.docbook:6597 #, fuzzy msgid "Class Scope widgets" msgstr "Klassräckviddskomponenter" #. (itstool) path: section/para #: C/index-in.docbook:6598 #, fuzzy msgid "" "If a programmer does not need dynamic memory allocation, automatic widgets " "in class scope may be used. One advantage of automatic widgets in class " "scope is that memory management is grouped in one place. The programmer does " "not risk memory leaks from failing to delete a widget." msgstr "" "Om en programmerare inte behöver dynamisk minnesallokering kan automatiska " "komponenter i klassräckvidd användas. En fördel med automatiska komponenter " "i klassräckvidd är att minneshantering grupperas på ett ställe. " "Programmeraren behöver inte riskera minnesläckor från att missa " "delete för en komponent." #. (itstool) path: section/para #: C/index-in.docbook:6604 #, fuzzy msgid "" "The primary disadvantage of using class scope widgets is revealing the class " "implementation rather than the class interface in the class header." msgstr "" "Den primära fördelen med att använda klassräckviddskomponenter är att " "avslöja klassimplementationen snarare än klassgränssnittet i klasshuvudet." #. (itstool) path: section/programlisting #: C/index-in.docbook:6608 #, fuzzy, no-wrap msgid "" "\n" "#include <gtkmm/button.h>\n" "#include <gtkmm/window.h>\n" "class Foo : public Gtk::Window\n" "{\n" "private:\n" " Gtk::Button theButton;\n" " // will be destroyed when the Foo object is destroyed\n" "};\n" msgstr "" "\n" "#include <gtkmm/button.h>\n" "#include <gtkmm/window.h>\n" "class Foo : public Gtk::Window\n" "{\n" "private:\n" " Gtk::Button theButton;\n" " // kommer förstöras när objektet Foo förstörs\n" "};\n" #. (itstool) path: section/title #: C/index-in.docbook:6621 #, fuzzy msgid "Function scope widgets" msgstr "Funktionsräckviddskomponenter" #. (itstool) path: section/para #: C/index-in.docbook:6622 #, fuzzy msgid "" "If a programmer does not need a class scope widget, a function scope widget " "may also be used. The advantages to function scope over class scope are the " "increased data hiding and reduced dependencies." msgstr "" "Om en programmerare inte behöver en klassräckviddskomponent kan en " "funktionsräckviddskomponent också användas. Fördelarna med funktionsräckvidd " "över klassräckvidd är det ökade datadöljandet och minskade beroendena." #. (itstool) path: section/programlisting #: C/index-in.docbook:6627 #, fuzzy, no-wrap msgid "" "\n" "{\n" " Gtk::Button aButton;\n" " aButton.set_visible(true);\n" " ...\n" " app->run();\n" "}\n" msgstr "" "\n" "{\n" " Gtk::Button aButton;\n" " aButton.show();\n" " ...\n" " app->run();\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:6635 #, fuzzy msgid "" "However, this technique is rarely useful. Most widgets can't safely be " "created before the application has been registered or activated. They can't " "safely be deleted after Gtk::Application::run() or " "Gtk::Application::make_window_and_run() returns." msgstr "" "Denna teknik är dock sällan användbar. De flesta komponenter kan inte på ett " "säkert sätt skapas innan programmet har registrerats eller aktiverats. De " "kan inte på ett säkert sätt tas bort efter att Gtk::Application::" "run() eller Gtk::Application::" "make_window_and_run() returnerar." #. (itstool) path: section/title #: C/index-in.docbook:6645 #, fuzzy msgid "Dynamic allocation with new and delete" msgstr "Dynamisk allokering med new och delete" # TODO: favor? #. (itstool) path: section/para #: C/index-in.docbook:6646 #, fuzzy msgid "" "Usually, the programmer will prefer to allow containers to automatically " "destroy their children by creating them using Gtk::make_managed() (see below). This is not strictly required, as the new and delete operators may also be used, but " "modern C++ style discourages those in favor of safer models of memory " "management, so it is better to create widgets using Gtk::" "make_managed() and let their parent destroy them, than to " "manually perform dynamic allocation." msgstr "" "Vanligen kommer programmeraren föredra att tillåta behållare att automatiskt " "förstöra sina underordnade genom att skapa dem med Gtk::" "make_managed() (se nedan). Detta är inte strikt nödvändigt då " "operatorerna new och delete också kan " "användas, men modern C++-stil avråder från dessa till förmån för säkrare " "minneshanteringsmodeller, så det är bättre att skapa komponenter med " "Gtk::make_managed() och låta deras överordnade förstöra " "dem än att manuellt utföra dynamisk allokering. <_:programlisting-1/> Här " "tar programmeraren bort pButton för att förhindra en " "minnesläcka." #. (itstool) path: section/programlisting #: C/index-in.docbook:6655 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "auto pButton = new Gtk::Button(\"Test\");\n" #| "\n" #| "// do something useful with pButton\n" #| "\n" #| "delete pButton;\n" msgid "" "\n" "auto pButton = new Gtk::Button(\"Test\");\n" "// do something useful with pButton\n" "delete pButton;\n" msgstr "" "\n" "auto pButton = new Gtk::Button(\"Test\");\n" "\n" "// gör något användbart med pButton\n" "\n" "delete pButton;\n" #. (itstool) path: section/para #: C/index-in.docbook:6660 msgid "" "Here, the programmer deletes pButton to prevent a memory " "leak." msgstr "" #. (itstool) path: section/title #: C/index-in.docbook:6667 msgid "Managed Widgets" msgstr "Hanterade komponenter" #. (itstool) path: section/para #: C/index-in.docbook:6669 #, fuzzy msgid "" "Alternatively, you can let a widget's container control when the widget is " "destroyed. In most cases, you want a widget to last only as long as the " "container it is in. To delegate the management of a widget's lifetime to its " "container, create it with Gtk::make_managed() and then " "pack it into its container with Gtk::Box::append() " "or a similar method. Now the widget will be destroyed whenever its container " "is destroyed." msgstr "" "Alternativt kan du låta en komponents behållare styra när komponenten " "förstörs. I de flesta fall vill du att en komponent ska finnas lika länge " "som behållaren den är i. För att delegera hanteringen av en komponents " "livstid till dess behållare skapar du den med Gtk::make_managed() och packar sedan in den i dess behållare med Gtk::Box::" "append() eller en liknande metod. Nu kommer komponenten " "förstöras närhelst dess behållare förstörs." #. (itstool) path: section/title #: C/index-in.docbook:6679 msgid "Dynamic allocation with make_managed() and append()" msgstr "Dynamisk allokering med make_managed() och append()" #. (itstool) path: section/para #: C/index-in.docbook:6681 #, fuzzy msgid "" "gtkmm provides ways including the " "make_managed() function and Gtk::Box::" "append() method to simplify creation and destruction of widgets " "whose lifetime can be managed by a parent." msgstr "" "gtkmm tillhandahåller sätt som " "make_managed()-funktionen och Gtk::Box::" "append()-metoden för att förenkla skapande och förstörande av " "komponenter vars livstid kan hanteras av en överordnad." #. (itstool) path: section/para #: C/index-in.docbook:6687 #, fuzzy msgid "" "Every widget except a top-level window must be added to a parent container " "in order to be displayed. The manage() function marks a " "widget so that when that widget is added to a parent container, said " "container becomes responsible for deleting the widget, meaning the user no " "longer needs to do so. The original way to create widgets whose lifetime is " "managed by their parent in this way was to call manage(), passing in the result of a new expression that " "created a dynamically allocated widget." msgstr "" "Varje komponent förutom en toppnivåkomponent måste läggas till i en " "överordnad behållare för att visas. Funktionen manage() " "markerar en komponent så att när den komponenten läggs till i en överordnad " "behållare så blir denna behållare ansvarig för att ta bort komponenten, " "vilket betyder att användaren inte behöver göra det. Det ursprungliga sättet " "att skapa komponenter vars livstid hanteras av deras överordnade på detta " "sätt var att anropa manage(), och skicka med resultatet " "av ett new-uttryck som skapat en dynamiskt allokerad " "komponent." #. (itstool) path: section/para #: C/index-in.docbook:6697 #, fuzzy msgid "" "However, usually, when you create such a widget, you will already know that " "its parent container should be responsible for destroying it. In addition, " "modern C++ style discourages use of the new operator, " "which was required when passing a newly created widget to " "manage(). Therefore, gtkmm " "has added make_managed(), which combines creation and " "marking with manage() into a single step. This avoids " "you having to write new, which is discouraged in modern C+" "+ style, and more clearly expresses intent to create a managed widget." msgstr "" "Oftast kommer du dock när du skapar en sådan komponent redan veta att dess " "överordnade behållare ska vara ansvarig för att förstöra den. Vidare avråder " "modern C++-stil från användning av new-operatorn, vilken " "krävdes då en nyss skapad komponent skickades till manage(). gtkmm har därför lagt till " "make_managed() som kombinerar skapande och markerande " "med manage() till ett enda steg. Detta undviker att du " "behöver skriva new, vilket avrådes från i modern C++-" "stil, och mer tydligt uttrycker avsikten att skapa en hanterad komponent." #. (itstool) path: section/programlisting #: C/index-in.docbook:6708 #, no-wrap msgid "" "\n" "MyContainer::MyContainer()\n" "{\n" " auto pButton = Gtk::make_managed<Gtk::Button>(\"Test\");\n" " append(*pButton); //add *pButton to MyContainer\n" "}\n" msgstr "" "\n" "MyContainer::MyContainer()\n" "{\n" " auto pButton = Gtk::make_managed<Gtk::Button>(\"Test\");\n" " append(*pButton); //lägg till *pButton till MyContainer\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:6715 #, fuzzy msgid "" "Now, when objects of type MyContainer are destroyed, " "the button will also be deleted. It is no longer necessary to delete " "pButton to free the button's memory; its deletion has " "been delegated to the MyContainer object." msgstr "" "När objekt av typen MyContainer nu förstörs kommer " "även knappen tas bort. Det är inte längre nödvändigt att ta bort " "pButton för att frigöra knappens minne. Dess borttagning " "har delegerats till MyContainer-objektet." #. (itstool) path: section/para #: C/index-in.docbook:6722 msgid "" "If you never added the widget to any parent container, it's your " "responsibility to delete it. If you add it to a container widget, and later " "remove it (for instance with Gtk::Box::remove()), " "it's deleted by the container." msgstr "" "Om du aldrig la till komponenten till någon överordnad behållare så är det " "ditt ansvar att ta bort den. Om du lägger till den till en " "behållarkomponent, och sedan tar bort den (exempelvis med Gtk::" "Box::remove()), så tas den bort av behållaren." #. (itstool) path: section/para #: C/index-in.docbook:6729 #, fuzzy msgid "" "Of course, a top-level container will not be added to another container. The " "programmer is responsible for destroying the top-level container using one " "of the traditional C++ techniques. Or you can let Gtk::" "Application::make_window_and_run() create a top-level window " "and delete it when it's hidden." msgstr "" "En toppnivåbehållare kommer förstås inte läggas till i en annan behållare. " "Programmeraren är ansvarig att förstöra toppnivåbehållaren med en av de " "traditionella C++-teknikerna. Eller så kan du låta Gtk::" "Application::make_window_and_run() skapa ett toppnivåfönster " "och ta bort det då det döljs." #. (itstool) path: section/title #: C/index-in.docbook:6741 msgid "Shared resources" msgstr "Delade resurser" #. (itstool) path: section/para #: C/index-in.docbook:6743 #, fuzzy msgid "" "Some objects, such as Gdk::Pixbufs and " "Pango::Fonts, are obtained from a shared store. " "Therefore you cannot instantiate your own instances. These classes typically " "inherit from Glib::Object. Rather than requiring you " "to reference and unreference these objects, gtkmm " "uses the Glib::RefPtr<> smartpointer. Cairomm " "has its own smartpointer, Cairo::RefPtr<>." msgstr "" "Vissa objekt, som Gdk::Pixbuf och Pango::" "Font erhålls från en delad lagring. Du kan därför inte " "instansiera dina egna instanser. Dessa klasser ärver typiskt från " "Glib::Object. Snarare än att kräva att du refererar " "och derefererar dessa objekt använder gtkmm " "smartpekaren Glib::RefPtr<>. Cairomm har sin " "egen smartpekare, Cairo::RefPtr<>." #. (itstool) path: section/para #: C/index-in.docbook:6753 #, fuzzy msgid "" "Objects such as Gdk::Pixbuf can only be instantiated " "with a create() function. For instance," msgstr "" "Objekt som Gdk::Pixbuf kan endast instansieras med en " "create()-funktion. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:6757 #, fuzzy, no-wrap msgid "" "\n" "auto pixbuf = Gdk::Pixbuf::create_from_file(filename);\n" msgstr "" "\n" "auto pixbuf = Gdk::Pixbuf::create_from_file(filnamn);\n" #. (itstool) path: section/para #: C/index-in.docbook:6761 #, fuzzy msgid "" "You have no way of getting a bare Gdk::Pixbuf. In the " "example, pixbuf is a smart pointer, so you can do this, " "much like a normal pointer:" msgstr "" "Du kan inte erhålla en naken Gdk::Pixbuf. I exemplet " "är pixbuf en smartpekare, så du kan göra detta i stort " "sett som en vanlig pekare:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6766 #, no-wrap msgid "" "\n" "auto width = 0;\n" "if(pixbuf)\n" "{\n" " width = pixbuf->get_width();\n" "}\n" msgstr "" "\n" "auto width = 0;\n" "if(pixbuf)\n" "{\n" " width = pixbuf->get_width();\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:6774 #, fuzzy msgid "" "When pixbuf goes out of scope an unref() will happen in the background and you don't need to worry about " "it anymore. There's no new so there's no delete." msgstr "" "När pixbuf lämnar räckvidden kommer en " "unref() hända i bakgrunden så behöver du inte oroa " "dig om det längre. Det finns inget new, så det finns " "inget delete." #. (itstool) path: section/para #: C/index-in.docbook:6780 #, fuzzy #| msgid "" #| "You can cast RefPtrs to base types, just like " #| "normal pointers." msgid "If you copy a RefPtr, for instance" msgstr "" "Du kan typkonvertera RefPtr-pekare till bastyper, " "precis som vanliga pekare." #. (itstool) path: section/programlisting #: C/index-in.docbook:6782 #, no-wrap msgid "" "\n" "auto pixbuf2 = pixbuf;\n" msgstr "" "\n" "auto pixbuf2 = pixbuf;\n" #. (itstool) path: section/para #: C/index-in.docbook:6785 #, fuzzy msgid "" "or if you pass it as a method argument or a return type, then " "RefPtr will do any necessary referencing to ensure " "that the instance will not be destroyed until the last RefPtr has gone out of scope." msgstr "" "Om du kopierar en RefPtr, till exempel <_:" "programlisting-1/> , eller om du skickar det som ett metodargument eller en " "returtyp så kommer RefPtr göra all nödvändig " "refererering för att säkerställa att instansen inte kommer förstöras innan " "den sista RefPtr har lämnat räckvidden." #. (itstool) path: section/para #: C/index-in.docbook:6790 #, fuzzy msgid "" "See the appendix for detailed " "information about RefPtr." msgstr "" "Se bilagan för detaljerad " "information om RefPtr." #. (itstool) path: listitem/para #: C/index-in.docbook:6795 #, fuzzy #| msgid "" #| "Bjarne Stroustrup, \"The C++ Programming Language\" Forth Edition - " #| "section 34.3" msgid "" "Bjarne Stroustrup, \"The C++ Programming Language\" Fourth Edition - section " "34.3" msgstr "" "Bjarne Stroustrup, ”The C++ Programming Language”, 4:e utgåvan - avsnitt 34.3" #. (itstool) path: listitem/para #: C/index-in.docbook:6798 msgid "Nicolai M. Josuttis, \"The C++ Standard Library\" - section 4.2" msgstr "Nicolai M. Josuttis, ”The C++ Standard Library” - avsnitt 4.2" #. (itstool) path: section/para #: C/index-in.docbook:6791 msgid "" "If you wish to learn more about smartpointers, you might look in these " "books: <_:itemizedlist-1/>" msgstr "" "Om du vill lära dig mer om smartpekare kan du titta i dessa böcker: <_:" "itemizedlist-1/>" #. (itstool) path: chapter/title #: C/index-in.docbook:6809 #, fuzzy #| msgid "Glade and Gtk::Builder" msgid "Gtk::Builder" msgstr "Glade och Gtk::Builder" #. (itstool) path: chapter/para #: C/index-in.docbook:6811 #, fuzzy msgid "" "Although you can use C++ code to instantiate and arrange widgets, this can " "soon become tedious and repetitive. And it requires a recompilation to show " "changes. The Cambalache application allows you to layout widgets on " "screen and then save an XML description of the arrangement. Your application " "can then use the Gtk::Builder API to load that " "XML file at runtime and obtain a pointer to specifically named widget " "instances." msgstr "" "Även om du kan använda C++-koden för att instansiera och arrangera " "komponenter kan detta snabbt bli tidskrävande och upprepande. Det kräver " "även en omkompilering för att visa ändringar. Programmet Glade låter dig skapa en layout för komponenter på skärmen och sedan " "spara en XML-beskrivning av arrangemanget. Ditt program kan sedan använda " "Gtk::Builder-API:t för att läsa in den XML-filen " "vid körning och erhålla en pekare till specifikt namngivna " "komponentinstanser." #. (itstool) path: listitem/simpara #: C/index-in.docbook:6824 msgid "Less C++ code is required." msgstr "Mindre C++-kod behöver skrivas." #. (itstool) path: listitem/simpara #: C/index-in.docbook:6825 msgid "UI changes can be seen more quickly, so UIs are able to improve." msgstr "" "Ändringar i användargränssnitten kan ses snabbare, så de kan förbättras." #. (itstool) path: listitem/simpara #: C/index-in.docbook:6826 msgid "Designers without programming skills can create and edit UIs." msgstr "" "Designers utan programmeringskunskap kan skapa och redigera " "användargränssnitt." #. (itstool) path: chapter/para #: C/index-in.docbook:6821 msgid "This has the following advantages: <_:orderedlist-1/>" msgstr "Detta har följande fördelar: <_:orderedlist-1/>" #. (itstool) path: chapter/para #: C/index-in.docbook:6830 #, fuzzy msgid "" "You still need C++ code to deal with User Interface changes triggered by " "user actions, but using Gtk::Builder for the " "widget layout allows you to focus on implementing that functionality." msgstr "" "Du behöver fortfarande C++-kod för att hantera ändringar i " "användargränssnittet som utlöses av användaråtgärder, men att använda " "Gtk::Builder för komponentlayouten låter dig " "fokusera på att implementera den funktionaliteten." #. (itstool) path: chapter/para #: C/index-in.docbook:6836 msgid "" "Cambalache replaces the Glade application. Glade can generate XML " "files to be used with gtk3/gtkmm3, but it does " "not support gtk4/gtkmm4." msgstr "" #. (itstool) path: section/title #: C/index-in.docbook:6843 #, fuzzy #| msgid "Loading the .glade file" msgid "Loading the .ui file" msgstr "Läsa in .glade-filen" #. (itstool) path: section/para #: C/index-in.docbook:6845 #, fuzzy #| msgid "" #| "Gtk::Builder must be used via a Glib::" #| "RefPtr. Like all such classes, you need to use a " #| "create() method to instantiate it. For instance, " #| "<_:programlisting-1/> This will instantiate the windows defined in the " #| ".glade file." msgid "" "Gtk::Builder must be used via a Glib::" "RefPtr. Like all such classes, you need to use a " "create() method to instantiate it. For instance," msgstr "" "Gtk::Builder måste användas via en Glib::" "RefPtr. Som alla andra sådana klasser behöver du använda en " "create()-metod för att instansiera den. Till " "exempel, <_:programlisting-1/> Detta kommer instansiera fönstren som " "definieras i .glade-filen." #. (itstool) path: section/programlisting #: C/index-in.docbook:6849 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "auto builder = Gtk::Builder::create_from_file(\"basic.glade\");\n" msgid "" "\n" "auto builder = Gtk::Builder::create_from_file(\"basic.ui\");\n" msgstr "" "\n" "auto builder = Gtk::Builder::create_from_file(\"basic.glade\");\n" #. (itstool) path: section/para #: C/index-in.docbook:6852 msgid "" "This will instantiate the windows defined in the .ui file." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:6855 msgid "" "To instantiate just one window, or just one of the child widgets, you can " "specify the name of a widget as the second parameter. For instance," msgstr "" "För att bara instansiera ett fönster, eller bara en av de underordnade " "komponenterna, kan du ange namnet på en komponent som den andra parametern. " "Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:6857 #, fuzzy, no-wrap msgid "" "\n" "auto builder = Gtk::Builder::create_from_file(\"basic.ui\", \"treeview_products\");\n" msgstr "" "\n" "auto builder = Gtk::Builder::create_from_file(\"basic.glade\", \"trädvyprodukter\");\n" #. (itstool) path: section/title #: C/index-in.docbook:6864 msgid "Accessing widgets" msgstr "Komma åt komponenter" #. (itstool) path: section/para #: C/index-in.docbook:6866 #, fuzzy msgid "" "To access a widget, for instance to show a dialog, use the " "get_widget() method, providing the widget's name. " "This name should be specified in the Cambalache " "window. If the widget could not be found, or is of the wrong type, then the " "pointer will be set to nullptr." msgstr "" "För att komma åt en komponent, exempelvis för att visa en dialogruta med " "show(), använder du metoden " "get_widget() och tillhandahåller komponentens namn. " "Detta namn bör anges i Glades egenskapsfönster. " "Om komponenten inte kunde hittas eller är av fel typ så kommer pekaren " "sättas till nullptr." #. (itstool) path: section/para #: C/index-in.docbook:6873 #, fuzzy msgid "" "The dialogs in this chapter are derived from Gtk::Window because Gtk::Dialog is deprecated since " "gtkmm 4.10." msgstr "" "I detta steg använder vi en Gtk::Builder-instans för " "att associera en Gtk::Builder-ui-fil med vår " "programfönsterklass." #. (itstool) path: section/programlisting #: C/index-in.docbook:6877 #, fuzzy, no-wrap msgid "" "\n" "auto pDialog = builder->get_widget<Gtk::Window>(\"DialogBasic\");\n" msgstr "" "\n" "auto pDialog = builder->get_widget<Gtk::Dialog>(\"DialogBasic\");\n" #. (itstool) path: section/para #: C/index-in.docbook:6881 #, fuzzy msgid "" "Gtk::Builder checks for a null pointer, and checks " "that the widget is of the expected type, and will show warnings on the " "command line about these." msgstr "" "Gtk::Builder tittar efter en null-pekare, och " "kontrollerar att komponenten är av förväntad typ, och kommer visa varningar " "på kommandoraden om dessa." #. (itstool) path: section/para #: C/index-in.docbook:6887 #, fuzzy msgid "" "Remember that you are not instantiating a widget with " "get_widget(), you are just obtaining a pointer to " "one that already exists. You will always receive a pointer to the same " "instance when you call get_widget() on the same " "Gtk::Builder, with the same widget name. The widgets " "are instantiated during Gtk::Builder::create_from_file()." msgstr "" "Kom ihåg att du inte instansierar en komponent med get_widget(), utan bara erhållare en pekare till en som redan finns. Du " "kommer alltid erhålla en pekare till samma instans när du anropar " "get_widget() på samma Gtk::Builder med samma komponentnamn. Komponenterna instansieras under " "Gtk::Builder::create_from_file()." #. (itstool) path: section/para #: C/index-in.docbook:6896 #, fuzzy msgid "" "get_widget() returns child widgets that are " "manage()ed (see the Memory Management chapter), so they will be deleted when " "their parent container is deleted. Windows (such as " "Dialogs) cannot be managed because they have no " "parent container, so you must delete them at some point. The documentation " "of Gtk::Builder has more to say about the memory " "management of different kinds of objects." msgstr "" "get_widget() returnerar underordnade komponenter " "som hanteras med manage() (se kapitlet Minneshantering), så de kommer tas bort " "när den överordnade behållaren tas bort. Window (som " "Dialog) kan inte hanteras för de har ingen överordnad " "behållare, så du måste ta bort dem vid något tillfälle. Dokumentationen för " "Gtk::Builder har mer att säga om minneshanteringen " "för olika sorters objekt." #. (itstool) path: section/para #: C/index-in.docbook:6906 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: section/para #: C/index-in.docbook:6911 #, fuzzy msgid "" "This simple example shows how to load a .ui file at runtime and access the widgets with Gtk::" "Builder." msgstr "" "Detta enkla exempel visar hur du läser in en Glade-fil vid körning och kommer åt komponenterna med " "Gtk::Builder." #. (itstool) path: section/para #: C/index-in.docbook:6916 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:6923 msgid "Using derived widgets" msgstr "Använda härledda komponenter" #. (itstool) path: section/para #: C/index-in.docbook:6925 #, fuzzy msgid "" "You can use Cambalache and Gtk::" "Builder to layout your own custom widgets derived from " "gtkmm widget classes. This keeps your code " "organized and encapsulated, separating declarative presentation from " "business logic, avoiding having most of your source just be setting " "properties and packing in containers." msgstr "" "Du kan användaGtk::Builder och Glade för att göra en layout för dina egna anpassade komponenter " "härledda från gtkmm-komponentklasser. Detta " "håller din kod organiserad och inkapslad, skiljer på deklarativ presentation " "från affärslogik, och undviker att det mesta av din kod bara ställer in " "egenskaper och packning i behållare." #. (itstool) path: section/para #: C/index-in.docbook:6933 #, fuzzy msgid "" "Use Gtk::Builder::get_widget_derived() like so:" msgstr "" "Använd Gtk::Builder::get_widget_derived() så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:6935 #, fuzzy, no-wrap msgid "" "\n" "auto pDialog = Gtk::Builder::get_widget_derived<DerivedDialog>(builder, \"DialogDerived\");\n" msgstr "" "\n" "auto pDialog = Gtk::Builder::get_widget_derived<DerivedDialog>(builder, \"DialogDerived\");\n" #. (itstool) path: section/para #: C/index-in.docbook:6939 #, fuzzy msgid "" "Your derived class must have a constructor that takes a pointer to the " "underlying C type, and the Gtk::Builder instance. All " "relevant classes of gtkmm typedef their " "underlying C type as BaseObjectType (Gtk::" "Window typedefs BaseObjectType as " "GtkWindow, for instance)." msgstr "" "Din härledda klass måste ha en konstruktor som tar en pekare till den " "underliggande C-typen och Gtk::Builder-instansen. " "Alla relevanta klasser av gtkmm typdefinierar " "deras underliggande C-typ som BaseObjectType " "(Gtk::Dialog typdefinierar exempelvis " "BaseObjectType som GtkDialog)." #. (itstool) path: section/para #: C/index-in.docbook:6946 msgid "" "You must call the base class's constructor in the initialization list, " "providing the C pointer. For instance," msgstr "" "Du måste anropa basklassens konstruktor i initieringslistan och " "tillhandahålla C-pekaren. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:6950 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" #| ": Gtk::Dialog(cobject)\n" #| "{\n" #| "}\n" msgid "" "\n" "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" ": Gtk::Window(cobject)\n" "{\n" "}\n" msgstr "" "\n" "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" ": Gtk::Dialog(cobject)\n" "{\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:6957 #, fuzzy msgid "" "You could then encapsulate the manipulation of the child widgets in the " "constructor of the derived class, maybe using get_widget() or get_widget_derived() again. For " "instance," msgstr "" "Du kan sedan kapsla in manipuleringen av de underordnade komponenterna i " "konstruktorn av den härledda klassen, kanske genom att använda " "get_widget() eller " "get_widget_derived() igen. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:6962 #, fuzzy, no-wrap msgid "" "\n" "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" ": Gtk::Window(cobject),\n" " m_builder(builder),\n" " // Get the GtkBuilder-instantiated Button, and connect a signal handler:\n" " m_pButton(m_builder->get_widget<Gtk::Button>(\"quit_button\"))\n" "{\n" " if (m_pButton)\n" " {\n" " m_pButton->signal_clicked().connect( sigc::mem_fun(*this, &DerivedDialog::on_button_quit) );\n" " }\n" "}\n" msgstr "" "\n" "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" ": Gtk::Dialog(cobject),\n" " m_builder(builder),\n" " //Få Glade-instansierad Button, och anslut en signalhanterare:\n" " m_pButton(m_builder->get_widget<Gtk::Button>(\"quit_button\"))\n" "{\n" " if(m_pButton)\n" " {\n" " m_pButton->signal_clicked().connect( sigc::mem_fun(*this, &DerivedDialog::on_button_quit) );\n" " }\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:6976 #, fuzzy msgid "" "It's possible to pass additional arguments from " "get_widget_derived() to the constructor of the " "derived widget. For instance, this call to get_widget_derived()" msgstr "" "Det är möjligt att skicka ytterligare argument från " "get_widget_derived() till konstruktorn för den " "härledda komponenten. Exempelvis kan detta anrop till " "get_widget_derived() <_:programlisting-1/> starta " "denna konstruktor <_:programlisting-2/>" #. (itstool) path: section/programlisting #: C/index-in.docbook:6981 #, fuzzy, no-wrap msgid "" "\n" "auto pDialog = Gtk::Builder::get_widget_derived<DerivedDialog>(builder, \"DialogDerived\", true);\n" msgstr "" "\n" "auto pDialog = Gtk::Builder::get_widget_derived<DerivedDialog>(builder, \"DialogDerived\", true);\n" #. (itstool) path: section/para #: C/index-in.docbook:6984 #, fuzzy #| msgid "Hand-coding constructors" msgid "can invoke this constructor" msgstr "Koda konstruktorer för hand" #. (itstool) path: section/programlisting #: C/index-in.docbook:6986 #, fuzzy, no-wrap msgid "" "\n" "DerivedDialog::DerivedDialog(BaseObjectType* cobject,\n" " const Glib::RefPtr<Gtk::Builder>& builder, bool warning)\n" ": Gtk::Window(cobject),\n" " m_builder(builder),\n" " m_pButton(m_builder->get_widget<Gtk::Button>(\"quit_button\"))\n" "{\n" " // ....\n" "}\n" msgstr "" "\n" "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder, bool warning)\n" ": Gtk::Dialog(cobject),\n" " m_builder(builder),\n" " m_pButton(m_builder->get_widget<Gtk::Button>(\"quit_button\"))\n" "{\n" " // ....\n" "}\n" #. (itstool) path: section/title #: C/index-in.docbook:6998 msgid "Gtk::Builder and Glib::Property" msgstr "Gtk::Builder och Glib::Property" #. (itstool) path: section/para #: C/index-in.docbook:7000 #, fuzzy msgid "" "If your derived widget uses Glib::Property, it " "becomes slightly more complicated. A derived widget that contains " "Glib::Property members must be registered with its " "own name in the GType system. It must be registered before any " "of the create_from_*() or add_from_*() methods are called, meaning that you may have to create an " "instance of your derived widget just to have its class registered. Your " "derived widget must have a constructor that has the parameters required by " "get_widget_derived() and calls the Glib::" "ObjectBase constructor to register the GType." msgstr "" "Om din härledda komponent använder Glib::Property " "blir det lite mer komplicerat. En härledd komponent som innehåller " "Glib::Property-medlemmar måste registreras med sitt " "eget namn i GType-systemet. Den måste registreras innan någon " "av create_from_*()- eller add_from_*()-metoderna anropas, vilket betyder att du kan behöva skapa en " "instans av din härledda komponent bara för att dess klass ska registreras. " "Din härledda komponent måste ha en konstruktor som har parametrarna som " "krävs av get_widget_derived() och anropar " "Glib::ObjectBase-konstruktorn för att registrera " "GType-typen." #. (itstool) path: section/programlisting #: C/index-in.docbook:7011 #, fuzzy, no-wrap msgid "" "\n" "DerivedButton::DerivedButton(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" ": Glib::ObjectBase(\"MyButton\"), // The GType name will be gtkmm__CustomObject_MyButton.\n" " Gtk::Button(cobject),\n" " prop_ustring(*this, \"button-ustring\"),\n" " prop_int(*this, \"button-int\", 10)\n" "{\n" " // ....\n" "}\n" msgstr "" "\n" "DerivedButton::DerivedButton(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)\n" ": Glib::ObjectBase(\"MyButton\"), // GType-namnet kommer vara gtkmm__CustomObject_MyButton.\n" " Gtk::Button(cobject),\n" " prop_ustring(*this, \"button-ustring\"),\n" " prop_int(*this, \"button-int\", 10)\n" "{\n" " // ....\n" "}\n" # TODO: recognize #. (itstool) path: section/para #: C/index-in.docbook:7021 #, fuzzy msgid "" "It is possible also to specify properties of derived widgets, declared in C+" "+ using gtkmm, within .ui files and load/set these using " "Gtk::Builder. See the documentation of " "Gtk::Builder for more details on how to achieve this. " "Cambalache won’t recognize such properties as-is, " "but you should be able to add a few lines of hand-coded XML to the XML code " "generated by Cambalache." msgstr "" "När gtkmm används med en version av " "glibmm som är 2.62 och högre är det även möjligt " "att ange egenskaper för härledda komponenter, deklarerade i C++ med " "gtkmm, i .glade-filer och " "läsa in/sätta dessa med Gtk::Builder. Se " "dokumentationen för Gtk::Builder för mer detaljer om " "hur detta kan uppnås. Glade kommer inte känna igen sådana egenskaper som de " "är, men bör kunna göra det genom användning av " "egenskapsklassdefinitioner och en katalog som deklarerar dessa nya " "egenskaper." #. (itstool) path: section/para #: C/index-in.docbook:7035 #, fuzzy #| msgid "" #| "This example shows how to load a Glade file at " #| "runtime and access the widgets via derived classes." msgid "" "This example shows how to load a .ui file at runtime and access the widgets via derived classes." msgstr "" "Detta exempel visar hur du läser in en Glade-fil " "vid körning och kommer åt komponenterna genom härledda klasser." #. (itstool) path: section/para #: C/index-in.docbook:7040 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:7049 msgid "Internationalization and Localization" msgstr "Internationalisering och lokalisering" #. (itstool) path: chapter/para #: C/index-in.docbook:7051 msgid "" "gtkmm applications can easily support multiple " "languages, including non-European languages such as Chinese and right-to-" "left languages such as Arabic. An appropriately-written and translated " "gtkmm application will use the appropriate " "language at runtime based on the user's environment." msgstr "" "gtkmm-program kan lätt stöda flera språk, " "inklusive icke-europeiska språk som kinesiska och höger-till-vänster-språk " "som arabiska. Ett korrekt skrivet och översatt gtkmm-program kommer använda lämpligt språk vid körning beroende på " "användarens miljö." #. (itstool) path: chapter/para #: C/index-in.docbook:7057 msgid "" "You might not anticipate the need to support additional languages, but you " "can never rule it out. And it's easier to develop the application properly " "in the first place rather than retrofitting later." msgstr "" "Du kanske inte förutser något behov av att stödja ytterligare språk, men du " "kan aldrig utesluta det. Det är även lättare att utveckla programmet korrekt " "till att börja med än att skriva om det senare." #. (itstool) path: chapter/para #: C/index-in.docbook:7063 #, fuzzy msgid "" "The process of writing source code that allows for translation is called " "internationalization, often abbreviated to i18n. The Localization process, sometimes abbreviated " "as l10n, provides translated text for other languages, " "based on that source code." msgstr "" "Processen med att skriva källkod som tillåter översättning kallas " "internationalisering, ofta förkortat till i18n. Processen med lokalisering, ibland förkortad " "som l10n, tillhandahåller översatt text för andra språk, " "baserat på den källkoden." #. (itstool) path: chapter/para #: C/index-in.docbook:7071 #, fuzzy msgid "" "The main activity in the internationalization process is finding strings " "seen by users and marking them for translation. You do not need to do it all " "at once - if you set up the necessary project infrastructure correctly then " "your application will work normally regardless of how many strings you've " "covered." msgstr "" "Huvudaktiviteten i internationaliseringsprocessen är att hitta strängar som " "användare ser och markera dem för översättning. Du behöver inte göra allt på " "en gång - om du konfigurerar den nödvändiga projektinfrastrukturen rätt " "kommer ditt program fungera som vanligt oavsett hur många strängar du täckt." #. (itstool) path: chapter/para #: C/index-in.docbook:7079 #, fuzzy msgid "" "String literals should be typed in the source code in English, but " "surrounded by a macro. The gettext (or intltool) " "utility can then extract the marked strings for translation, and substitute " "the translated text at runtime." msgstr "" "Stränglitteraler bör skrivas in i källkoden på engelska, men omges av ett " "makro. Verktyget gettext (eller intltool) kan " "sedan extrahera de markerade strängarna för översättning, och ersätta den " "översatta texten vid körning." #. (itstool) path: section/title #: C/index-in.docbook:7087 msgid "Preparing your project" msgstr "Förbereda ditt projekt" #. (itstool) path: note/para #: C/index-in.docbook:7090 #, fuzzy msgid "" "In the instructions below we will assume that you will not be using " "gettext directly, but intltool, which was written specifically for GNOME. " "intltool uses gettext(), " "which extracts strings from source code, but intltool can also combine strings from other files, for example from " "desktop menu details, and GUI resource files such as .ui files, into standard " "gettext .pot/.po files." msgstr "" "I instruktionerna nedan kommer vi anta att du inte kommer använda " "gettext direkt, utan intltool som skrevs specifikt för GNOME. " "intltool använder gettext() " "vilket extraherar strängar från källkod, men intltool kan också kombinera strängar från andra filer, exempelvis från " "skrivbordsmenydetaljer, och GUI-resursfiler som Glade-files, till gettexts .pot/." "po-standardfiler." #. (itstool) path: note/para #: C/index-in.docbook:7101 #, fuzzy msgid "" "We also assume that you are using autotools (automake and autoconf) to build your project " "(although autotools is not recommended for new applications), and that you " "are using ./autogen.sh from " "gnome-common or a similar autogen." "sh file, which, among other things, takes care of some " "intltool initialization." msgstr "" "Vi antar också att du använder autotools (automake och autoconf) för att bygga ditt " "projekt (även om autotools inte rekommenderas för nya program), och att du " "använder ./autogen.sh från gnome-" "common eller en liknande autogen.sh-" "fil som bland annat tar hand om viss intltool-" "initiering." # TODO: Suggest "Localization" upstream? #. (itstool) path: note/para #: C/index-in.docbook:7113 msgid "" "If you are using meson (recommended), see the " "Localisation chapter in Meson's manual. You can then skip this section." msgstr "" "Om du använder meson (rekommenderas), se kapitlet " "Lokalisering i handboken för Meson. Du kan sedan hoppa över detta avsnitt." #. (itstool) path: section/para #: C/index-in.docbook:7120 msgid "" "An alternative to gnome-common's autogen." "sh may look like this:" msgstr "" "Ett alternativ till autogen.sh från gnome-" "common kan se ut så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7124 #, no-wrap msgid "" "#! /bin/sh -e\n" "test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n" "test -n \"$srcdir\" || srcdir=.\n" "\n" "autoreconf --force --install --verbose --warnings=all \"$srcdir\"\n" "echo \"Running intltoolize --copy --force --automake\"\n" "intltoolize --copy --force --automake\n" "test -n \"$NOCONFIGURE\" || \"$srcdir/configure\" \"$@\"" msgstr "" "#! /bin/sh -e\n" "test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n" "test -n \"$srcdir\" || srcdir=.\n" "\n" "autoreconf --force --install --verbose --warnings=all \"$srcdir\"\n" "echo \"Running intltoolize --copy --force --automake\"\n" "intltoolize --copy --force --automake\n" "test -n \"$NOCONFIGURE\" || \"$srcdir/configure\" \"$@\"" #. (itstool) path: section/para #: C/index-in.docbook:7133 #, fuzzy msgid "" "Create a sub-directory named po in your project's root " "directory. This directory will eventually contain all of your translations. " "Within it, create a file named LINGUAS and a file named " "POTFILES.in. It is common practice to also create a " "ChangeLog file in the po directory so " "that translators can keep track of translation changes." msgstr "" "Skapa en underkatalog med namnet po i ditt projekts " "rotkatalog. Denna katalog kommer i slutändan innehålla alla dina " "översättningar. Skapa i den en fil med namnet LINGUAS och " "en fil med namnet POTFILES.in. Det är även även vanligt " "att skapa en ChangeLog-fil i po-" "katalogen så att översättningar kan hålla koll på översättningsändringar." #. (itstool) path: section/para #: C/index-in.docbook:7143 msgid "" "LINGUAS contains an alphabetically sorted list of codes " "identifying the languages for which your program is translated (comment " "lines starting with a # are ignored). Each language code " "listed in the LINGUAS file must have a corresponding " ".po file. So, if your program has German and Japanese " "translations, your LINGUAS file would look like this:" msgstr "" "LINGUAS innehåller en alfabetiskt sorterad lista med " "koder som identifierar språken som ditt program översatts till " "(kommentarsrader startar med # och ignoreras). Varje " "språkkod som listas i LINGUAS-filen måste ha en " "motsvarande .po-fil. Så om ditt program har tyska och " "japanska översättningar så skulle din LINGUAS-fil se ut " "så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7152 #, no-wrap msgid "" "# keep this file sorted alphabetically, one language code per line\n" "de\n" "ja" msgstr "" "# keep this file sorted alphabetically, one language code per line\n" "de\n" "ja" #. (itstool) path: section/para #: C/index-in.docbook:7155 msgid "" "(In addition, you'd have the files de.po and ja." "po in your po directory which contain the " "German and Japanese translations, respectively.)" msgstr "" "(Dessutom skulle du ha filerna de.po och ja.po i din po-katalog som innehåller de tyska " "respektive japanska översättningarna.)" #. (itstool) path: section/para #: C/index-in.docbook:7162 msgid "" "POTFILES.in is a list of paths to all files which contain " "strings marked up for translation, starting from the project root directory. " "So for example, if your project sources were located in a subdirectory named " "src, and you had two files that contained strings that " "should be translated, your POTFILES.in file might look " "like this:" msgstr "" "POTFILES.in är en lista över sökvägar till alla filer som " "innehåller strängar som markerats för översättning, med start i projektets " "rotkatalog. Så om ditt projekts källkod fanns i en underkatalog med namnet " "src, och du hade två filer som innehöll strängar som ska " "översättas, så skulle din POTFILES.in-fil kunna se ut så " "här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7171 #, no-wrap msgid "" "src/main.cc\n" "src/other.cc" msgstr "" "src/main.cc\n" "src/other.cc" #. (itstool) path: section/para #: C/index-in.docbook:7174 #, fuzzy msgid "" "If you are using gettext directly, you can only " "mark strings for translation if they are in source code file. However, if " "you use intltool, you can mark strings for " "translation in a variety of other file formats, including .ui files, xml, .desktop files " "and several more. So, if you have designed some of the application UI in xml " "files then also add your .ui files " "to the list in POTFILES.in." msgstr "" "Om du använder gettext direkt kan du endast " "markera strängar för översättning om de är i källkodsfiler. Om du använder " "intltool kan du dock markera strängar för " "översättning i ett antal andra filformat, inklusive Glades UI-filer, xml, .desktop-filer och flera till. Så om " "du har designat delar av programmets användargränssnitt i " "Glade så lägger du också till dina ." "glade-filer till listan i POTFILES.in." #. (itstool) path: section/para #: C/index-in.docbook:7187 msgid "" "Now that there is a place to put your translations, you need to initialize " "intltool and gettext. " "Add the following code to your configure.ac, substituting " "'programname' with the name of your program:" msgstr "" "Nu då det finns en plats att lägga dina översättningar behöver du initiera " "intltool och gettext. " "Lägg till följande kod till din configure.ac och ersätt " "”programnamn” med namnet på ditt program:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7194 #, fuzzy, no-wrap msgid "" "IT_PROG_INTLTOOL([0.35.0])\n" "\n" "GETTEXT_PACKAGE=programname\n" "AC_SUBST(GETTEXT_PACKAGE)\n" "AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], [\"$GETTEXT_PACKAGE\"],\n" " [The domain to use with gettext])\n" "AM_GNU_GETTEXT([external])\n" "AM_GNU_GETTEXT_VERSION([0.17])\n" "\n" "PROGRAMNAME_LOCALEDIR=[${datadir}/locale]\n" "AC_SUBST(PROGRAMNAME_LOCALEDIR)" msgstr "" "IT_PROG_INTLTOOL([0.35.0])\n" "\n" "GETTEXT_PACKAGE=programnamn\n" "AC_SUBST(GETTEXT_PACKAGE)\n" "AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], [\"$GETTEXT_PACKAGE\"],\n" " [Domänen att använda med gettext])\n" "AM_GNU_GETTEXT([external])\n" "AM_GNU_GETTEXT_VERSION([0.17])\n" "\n" "PROGRAMNAME_LOCALEDIR=[${datadir}/locale]\n" "AC_SUBST(PROGRAMNAME_LOCALEDIR)" #. (itstool) path: section/para #: C/index-in.docbook:7206 #, fuzzy msgid "" "This PROGRAMNAME_LOCALEDIR variable will be used later in " "the Makefile.am file, to define a macro that will be used " "when you initialize gettext in your source code." msgstr "" "Denna variabel PROGRAMNAME_LOCALEDIR kommer användas " "senare i Makefile.am-filen för att definiera ett makro " "som kommer användas när du initierar gettext i " "din källkod." #. (itstool) path: section/para #: C/index-in.docbook:7213 msgid "" "AM_GLIB_GNU_GETTEXT has been an alternative to " "AM_GNU_GETTEXT and AM_GNU_GETTEXT_VERSION, but AM_GLIB_GNU_GETTEXT is now deprecated, and " "shall not be used in new code." msgstr "" "AM_GLIB_GNU_GETTEXT har varit ett alternativ till " "AM_GNU_GETTEXT och AM_GNU_GETTEXT_VERSION, men AM_GLIB_GNU_GETTEXT är nu föråldrat, och " "ska inte användas i ny kod." #. (itstool) path: listitem/para #: C/index-in.docbook:7224 msgid "" "Add po to the SUBDIRS variable. " "Without this, your translations won't get built and installed when you build " "the program" msgstr "" "Lägg till po till variabeln SUBDIRS. " "Utan detta kommer dina översättningar inte byggas och installeras när du " "bygger programmet" #. (itstool) path: listitem/para #: C/index-in.docbook:7229 #, fuzzy #| msgid "Define INTLTOOL_FILES as: <_:programlisting-1/>" msgid "Define INTLTOOL_FILES as:" msgstr "Definiera INTLTOOL_FILES som: <_:programlisting-1/>" #. (itstool) path: listitem/programlisting #: C/index-in.docbook:7231 #, no-wrap msgid "" "INTLTOOL_FILES = intltool-extract.in \\\n" " intltool-merge.in \\\n" " intltool-update.in" msgstr "" "INTLTOOL_FILES = intltool-extract.in \\\n" " intltool-merge.in \\\n" " intltool-update.in" #. (itstool) path: listitem/para #: C/index-in.docbook:7236 #, fuzzy msgid "" "Add INTLTOOL_FILES to the EXTRA_DIST " "list of files. This ensures that when you do a make dist, " "these files will be included in the source tarball." msgstr "" "Lägg till INTLTOOL_FILES till fillistan " "EXTRA_DIST. Detta säkerställer att när du kör " "make dist så kommer dessa filer inkluderas i käll-" "tarbollen." #. (itstool) path: listitem/para #: C/index-in.docbook:7244 #, fuzzy #| msgid "Update your DISTCLEANFILES: <_:programlisting-1/>" msgid "Update your DISTCLEANFILES:" msgstr "Uppdatera din DISTCLEANFILES: <_:programlisting-1/>" #. (itstool) path: listitem/programlisting #: C/index-in.docbook:7246 #, no-wrap msgid "" "DISTCLEANFILES = ... intltool-extract \\\n" " intltool-merge \\\n" " intltool-update \\\n" " po/.intltool-merge-cache" msgstr "" "DISTCLEANFILES = ... intltool-extract \\\n" " intltool-merge \\\n" " intltool-update \\\n" " po/.intltool-merge-cache" #. (itstool) path: listitem/para #: C/index-in.docbook:7252 #, fuzzy #| msgid "" #| "Depending on the types of files that contain translatable strings, add " #| "code such as <_:programlisting-1/>" msgid "" "Depending on the types of files that contain translatable strings, add code " "such as" msgstr "" "Beroende på typerna av filer som innehåller översättbara strängar lägger du " "till kod som <_:programlisting-1/>" #. (itstool) path: listitem/programlisting #: C/index-in.docbook:7255 #, fuzzy, no-wrap msgid "" "desktopdir = $(datadir)/applications\n" "desktop_in_files = programname.desktop.in\n" "desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)\n" "@INTLTOOL_DESKTOP_RULE@" msgstr "" "desktopdir = $(datadir)/applications\n" "desktop_in_files = programnamn.desktop.in\n" "desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)\n" "@INTLTOOL_DESKTOP_RULE@" #. (itstool) path: section/para #: C/index-in.docbook:7220 msgid "In the top-level Makefile.am: <_:itemizedlist-1/>" msgstr "I Makefile.am på toppnivån: <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:7263 #, fuzzy msgid "" "In your src/Makefile.am, update your " "AM_CPPFLAGS to add the following preprocessor macro " "definition:" msgstr "" "Uppdatera AM_CPPFLAGS i din src/Makefile.am så att du lägger till följande preprocessormakrodefinition:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7268 #, fuzzy, no-wrap msgid "AM_CPPFLAGS = ... -DPROGRAMNAME_LOCALEDIR=\\\"${PROGRAMNAME_LOCALEDIR}\\\"" msgstr "AM_CPPFLAGS = ... -DPROGRAMNAME_LOCALEDIR=\\\"${PROGRAMNAMN_LOCALEDIR}\\\"" #. (itstool) path: section/para #: C/index-in.docbook:7269 msgid "" "This macro will be used when you initialize gettext in " "your source code." msgstr "" "Detta makro kommer användas när du initierar gettext i " "din källkod." #. (itstool) path: section/title #: C/index-in.docbook:7276 msgid "Marking strings for translation" msgstr "Markera strängar för översättning" #. (itstool) path: section/para #: C/index-in.docbook:7278 #, fuzzy msgid "" "String literals should be typed in the source code in English, but they " "should be surrounded by a call to the gettext() " "function. These strings will be extracted for translation and the " "translations may be used at runtime instead of the original English strings." msgstr "" "Stränglitterarer bör typas i källkoden på engelska, men de bör omgärdas av " "ett anrop till gettext()-funktionen. Dessa strängar " "kommer extraheras för översättning och översättningarna kan användas vid " "körning i stället för de ursprungliga engelska strängarna." #. (itstool) path: section/para #: C/index-in.docbook:7286 msgid "" "The GNU gettext package allows you to mark " "strings in source code, extract those strings for translation, and use the " "translated strings in your application." msgstr "" "Paketet GNU gettext låter dig markera strängar i " "källkod, extrahera dessa strängar för översättning, och använda de översatta " "strängarna i ditt program." #. (itstool) path: section/para #: C/index-in.docbook:7292 #, fuzzy msgid "" "However, Glib defines gettext() support macros which are shorter wrappers in an easy-to-use form. " "To use these macros, include <glibmm/i18n.h>, and " "then, for example, substitute:" msgstr "" "Glib definierar dock gettext()-stödmakron som är kortare omslag i en lättanvänd form. För att " "använda dessa makron inkluderar du <glibmm/i18n.h> " "och ersätter exempelvis: <_:programlisting-1/> med: <_:programlisting-2/>" #. (itstool) path: section/programlisting #: C/index-in.docbook:7298 #, fuzzy, no-wrap msgid "display_message(\"Getting ready for i18n.\");" msgstr "display_message(\"Getting ready for i18n.\");" #. (itstool) path: section/para #: C/index-in.docbook:7299 msgid "with:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:7300 #, fuzzy, no-wrap msgid "display_message(_(\"Getting ready for i18n.\"));" msgstr "display_message(_(\"Getting ready for i18n.\"));" #. (itstool) path: section/para #: C/index-in.docbook:7302 #, fuzzy msgid "" "For reference, it is possible to generate a file which contains all strings " "which appear in your code, even if they are not marked for translation, " "together with file name and line number references. To generate such a file " "named my-strings, execute the following command, within " "the source code directory:" msgstr "" "För referens är det möjligt att generera en fil som innehåller alla strängar " "som dyker upp i din kod även om de inte markerats för översättning, " "tillsammans med referenser till filnamn och radnummer. För att generera en " "sådan fil med namnet my-strings kör du följande kommando " "i källkodskatalogen:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7311 #, fuzzy, no-wrap msgid "xgettext -a -o my-strings --omit-header *.cc *.h" msgstr "xgettext -a -o my-strings --omit-header *.cc *.h" #. (itstool) path: section/para #: C/index-in.docbook:7313 msgid "" "Finally, to let your program use the translation for the current locale, add " "this code to the beginning of your main.cc file, to " "initialize gettext." msgstr "" "För att slutligen låta ditt program använda översättningen för aktuell lokal " "lägger du till denna kod i början av din main.cc-fil " "för att initiera gettext." #. (itstool) path: section/programlisting #: C/index-in.docbook:7318 #, fuzzy, no-wrap msgid "" "bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);\n" "bind_textdomain_codeset(GETTEXT_PACKAGE, \"UTF-8\");\n" "textdomain(GETTEXT_PACKAGE);" msgstr "" "bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);\n" "bind_textdomain_codeset(GETTEXT_PACKAGE, \"UTF-8\");\n" "textdomain(GETTEXT_PACKAGE);" #. (itstool) path: section/title #: C/index-in.docbook:7323 msgid "How gettext works" msgstr "Hur gettext fungerar" #. (itstool) path: section/para #: C/index-in.docbook:7325 #, fuzzy msgid "" "The intltool-update or xgettext script extracts the strings and puts them in a " "mypackage.pot file. The translators of your application " "create their translations by first copying this .pot " "file to a localename.po file. A locale identifies a " "language and an encoding for that language, including date and numerical " "formats. Later, when the text in your source code has changed, the " "msgmerge or intltool-update script is used to update the localename.po " "files from the regenerated .pot file." msgstr "" "Skripten intltool-update eller " "xgettext extraherar strängarna och stoppar dem i " "en fil mypackage.pot. Översättarna av ditt program " "skapar sina översättningar genom att först kopiera denna .pot-fil till en fil lokalnamn.po. En lokal " "identifierar ett språk och en kodning för det språket, inklusive datumformat " "och numeriska format. Senare när texten i din källkod har ändrats används " "skripten msgmerge eller intltool-" "update för att uppdatera lokalnamn.po-" "filerna från den på nytt genererade .pot-filen." #. (itstool) path: section/para #: C/index-in.docbook:7339 #, fuzzy msgid "" "At install time, the .po files are converted to a " "binary format (with the extension .mo) and placed in a " "system-wide directory for locale files, for example /usr/share/" "locale/." msgstr "" "Vid installeringstid konverteras .po-filerna till ett " "binärt format (med ändelsen .mo) och placeras i en " "systemomfattande katalog för lokalfiler, exempelvis /usr/share/" "locale/." #. (itstool) path: section/para #: C/index-in.docbook:7346 #, fuzzy msgid "" "When the application runs, the gettext library " "checks the system-wide directory to see if there is a .mo file for the user's locale environment (you can set the locale " "with, for instance, \"export LANG=de_DE.UTF-8\" from a bash console). Later, " "when the program reaches a gettext call, it looks for a " "translation of a particular string. If none is found, the original string is " "used." msgstr "" "När programmet körs kontrollerar gettext-" "biblioteket den systemomfattande katalogen för att se om det finns en " ".mo-fil för användarens lokalmiljö (du kan exempelvis " "ställa in lokalen med \"export LANG=de_DE.UTF-8\" från en bash-konsol). När " "programmet senare når ett gettext-anrop söker det en " "översättning för en viss sträng. Om ingen hittas används originalsträngen." #. (itstool) path: section/title #: C/index-in.docbook:7358 msgid "Testing and adding translations" msgstr "Testa och lägga till översättningar" #. (itstool) path: section/para #: C/index-in.docbook:7360 #, fuzzy msgid "" "To convince yourself that you've done well, you may wish to add a " "translation for a new locale. In order to do that, go to the po subdirectory of your project and execute the following command:" msgstr "" "För att försäkra dig om att du lyckats kan du vilja lägga till en " "översättning för en ny lokal. För att göra detta går du till underkatalogen " "po för ditt projekt och kör följande kommando:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7366 #, no-wrap msgid "intltool-update --pot" msgstr "intltool-update --pot" #. (itstool) path: section/para #: C/index-in.docbook:7368 #, fuzzy msgid "" "That will create a file named programname.pot. Now copy " "that file to languagecode.po, such as de.po or hu.po. Also add that language code to " "LINGUAS. The .po file contains a " "header and a list of English strings, with space for the translated strings " "to be entered. Make sure you set the encoding of the .po file (specified in the header, but also as content) to " "UTF-8." msgstr "" "Du kommer skapa en fil med namnet programnamn.pot. " "Kopiera nu den filen till språkkod.po, som de." "po eller hu.po. Lägg också till språkkoden " "till LINGUAS. .po-filen innehåller " "ett huvud och en lista över engelska strängar, med utrymme för de översatta " "strängarna att matas in. Se till att du ställer in kodningen för ." "po-filen (angiven i huvudet, men också som innehåll) till " "UTF-8." #. (itstool) path: note/para #: C/index-in.docbook:7381 #, fuzzy msgid "" "It's possible that certain strings will be marked as fuzzy in the .po file. These translations will not " "substitute the original string. To make them appear, simply remove the " "fuzzy tag. A fuzzy tag appears if a " "string content changed, but the location is still the same." msgstr "" "Det är möjligt att vissa strängar kommer markeras fuzzy i " ".po-filen. Dessa översättningar kommer inte ersätta " "originalsträngen. För att de ska visas tar du helt enkelt bort " "fuzzy-taggen. En fuzzy-tagg dyker " "läggs till om en strängs innehåll har ändrats men lokaliseringen fortfarande " "är densamma." #. (itstool) path: section/title #: C/index-in.docbook:7393 msgid "Resources" msgstr "Resurser" #. (itstool) path: listitem/para #: C/index-in.docbook:7401 msgid "" " L10N Guidelines for Developers" msgstr "" " L10N-riktlinjer för utvecklare" #. (itstool) path: listitem/para #: C/index-in.docbook:7408 msgid "" "Intltool README" msgstr "" "README för Intltool" #. (itstool) path: listitem/para #: C/index-in.docbook:7414 msgid "" "How " "to use Git for GNOME translators" msgstr "" "Använda Git för GNOME-översättare" #. (itstool) path: listitem/para #: C/index-in.docbook:7420 msgid "" "gettext manual" msgstr "" "Handbok för gettext" #. (itstool) path: listitem/para #: C/index-in.docbook:7426 msgid "" "gtkmm_hello example package" msgstr "" "Exempelpaketet gtkmm_hello" #. (itstool) path: listitem/para #: C/index-in.docbook:7432 msgid "" "gnomemm_hello example package" msgstr "" "Exempelpaketet gnomemm_hello" #. (itstool) path: section/para #: C/index-in.docbook:7395 #, fuzzy msgid "" "More information about what lies behind the internationalization and " "localization process is presented and demonstrated in: <_:itemizedlist-1/>" msgstr "" "Mer information om vad som ligger bakom internationaliserings- och " "lokalanpassningsprocessen presenteras och demonstreras i: <_:itemizedlist-1/>" #. (itstool) path: section/title #: C/index-in.docbook:7443 msgid "Expecting UTF8" msgstr "Förvänta sig UTF8" #. (itstool) path: section/para #: C/index-in.docbook:7445 #, fuzzy msgid "" "A properly internationalized application will not make assumptions about the " "number of bytes in a character. That means that you shouldn't use pointer " "arithmetic to step through the characters in a string, and it means you " "shouldn't use std::string or standard C functions " "such as strlen() because they make the same assumption." msgstr "" "Ett ordentligt internationaliserat program kommer inte göra antaganden om " "antalet byte i ett tecken. Detta betyder att du inte ska använda " "pekararitmetik för att stega genom tecknen i en sträng, och det betyder att " "du inte ska använda std::string eller C-" "standardfunktioner som strlen() för att de gör samma " "antagande." #. (itstool) path: section/para #: C/index-in.docbook:7452 #, fuzzy msgid "" "However, you probably already avoid bare char* arrays and pointer arithmetic " "by using std::string, so you just need to start using " "Glib::ustring instead. See the Basics chapter about Glib::ustring." msgstr "" "Du undviker dock troligen redan nakna char*-arrayer och pekararitmetik genom " "att använda std::string, så du behöver bara börja " "använda Glib::ustring i stället. Se i avsnittet Grunder om Glib::ustring." #. (itstool) path: section/title #: C/index-in.docbook:7460 msgid "Glib::ustring and std::iostreams" msgstr "Glib::ustring och std::iostreams" #. (itstool) path: section/para #: C/index-in.docbook:7463 #, fuzzy msgid "" "Unfortunately, the integration with the standard iostreams is not completely " "foolproof. gtkmm converts Glib::" "ustrings to a locale-specific encoding (which usually is not " "UTF-8) if you output them to an ostream with " "operator<<. Likewise, retrieving Glib::" "ustrings from istream with " "operator>> causes a conversion in the opposite " "direction. But this scheme breaks down if you go through a std::" "string, e.g. by inputting text from a stream to a " "std::string and then implicitly converting it to a " "Glib::ustring. If the string contained non-ASCII " "characters and the current locale is not UTF-8 encoded, the result is a " "corrupted Glib::ustring. You can work around this " "with a manual conversion. For instance, to retrieve the std::" "string from a ostringstream:" msgstr "" "Tyvärr är integrationen med iostream-standardströmmar inte helt idiotsäker. " "gtkmm konverterar Glib::ustring-strängar till en lokalspecifik kodning (vilken vanligen inte är " "UTF-8) om du matar ut dem till en ostream med " "operator<<. På samma sätt orsakar hämtning av " "Glib::ustring-strängar från istream med operator>> en konvertering i " "motsatt riktning. Men detta schema går sönder om du går genom en " "std::string, t.ex. genom att mata in text från en " "ström till en std::string och sedan implicit " "konvertera den till en Glib::ustring. Om strängen " "innehöll tecken som inte är ASCII och den aktuella lokalen inte är UTF-8-" "kodad, kommer resultatet vara en trasig Glib::ustring. Du kan arbeta runt detta med en manuell konvertering. För att " "exempelvis erhålla std::string-strängen från en " "ostringstream:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7479 #, fuzzy, no-wrap msgid "" "std::locale::global(std::locale(\"\")); // Set the global locale to the user's preferred locale.\n" " // Usually unnecessary here, because Glib::init()\n" " // or Gtk::Application::create() does it for you.\n" "std::ostringstream output;\n" "output << percentage << \" % done\";\n" "label->set_text(Glib::locale_to_utf8(output.str()));" msgstr "" "std::locale::global(std::locale(\"\")); // Sätt den globala lokalen till användarens föredragna lokal.\n" " // Vanligen onödigt här, för Glib::init()\n" " // eller Gtk::Application::create() gör det åt dig.\n" "std::ostringstream output;\n" "output << percentage << \" % klar\";\n" "label->set_text(Glib::locale_to_utf8(output.str()));" #. (itstool) path: section/title #: C/index-in.docbook:7490 msgid "Pitfalls" msgstr "Fallgropar" #. (itstool) path: section/para #: C/index-in.docbook:7492 msgid "" "There are a few common mistakes that you would discover eventually yourself. " "But this section might help you to avoid them." msgstr "" "Det finns några vanliga misstag som du så småningom skulle upptäcka själv. " "Men det här avsnittet kanske hjälper dig undvika dem." #. (itstool) path: section/title #: C/index-in.docbook:7495 #, fuzzy msgid "Same strings, different semantics" msgstr "Samma strängar, olika semantik" #. (itstool) path: section/para #: C/index-in.docbook:7497 msgid "" "Sometimes two English strings are identical but have different meanings in " "different contexts, so they would probably not be identical when translated. " "Since the English strings are used as look-up keys, this causes problems." msgstr "" "Ibland är två strängar på engelska identiska men har olika betydelse i olika " "kontexter, så de skulle troligen inte vara identiska då de översätts. Då de " "engelska strängarna används som nycklar för uppslagning så orsakar detta " "problem." #. (itstool) path: section/para #: C/index-in.docbook:7501 #, fuzzy msgid "" "In these cases, you should add extra characters to the strings. For " "instance, use \"jumps[noun]\" and " "\"jumps[verb]\" instead of just \"jumps\" and strip them again outside the gettext call. " "If you add extra characters you should also add a comment for the " "translators before the gettext call. Such comments will " "be shown in the .po files. For instance:" msgstr "" "I dessa fall bör du lägga till extra tecken till strängarna. Använd " "exempelvis \"jumps[noun]\" och \"jumps[verb]\" i stället för bara \"jumps\" och ta bort dem " "igen utanför gettext-anropet. Om du lägger till extra " "tecken ska du också lägga till en kommentar för översättarna innan " "gettext-anropet. Sådana kommentarer kommer visas i " ".po-filerna. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7510 #, no-wrap msgid "" "// note to translators: don't translate the \"[noun]\" part - it is\n" "// just here to distinguish the string from another \"jumps\" string\n" "text = strip(gettext(\"jumps[noun]\"), \"[noun]\");" msgstr "" "// note to translators: don't translate the \"[noun]\" part - it is\n" "// just here to distinguish the string from another \"jumps\" string\n" "text = strip(gettext(\"jumps[noun]\"), \"[noun]\");" #. (itstool) path: section/para #: C/index-in.docbook:7514 msgid "" "If you use Glib's support macros, it's easier. " "Use C_() instead of _(). For " "instance:" msgstr "" "Om du använder Glibs stödmakron är det enklare. " "Använd C_() i stället för _(). " "Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7518 #, no-wrap msgid "GLib::ustring text(C_(\"noun\", \"jumps\"));" msgstr "GLib::ustring text(C_(\"noun\", \"jumps\"));" #. (itstool) path: section/title #: C/index-in.docbook:7523 msgid "Composition of strings" msgstr "Sammansättning av strängar" # TODO: favors #. (itstool) path: section/para #: C/index-in.docbook:7525 #, fuzzy msgid "" "C programmers use sprintf() to compose and concatenate " "strings. C++ favors streams, but unfortunately, this approach makes " "translation difficult, because each fragment of text is translated " "separately, without allowing the translators to rearrange them according to " "the grammar of the language." msgstr "" "C-programmerare använder sprintf() för att komponera " "och konkatenera strängar. C++ föredrar strömmar, men detta angreppssätt gör " "tyvärr översättning svår, för varje textfragment översätts separat utan att " "låta översättarna arrangera om dem enligt språkets grammatik." #. (itstool) path: section/para #: C/index-in.docbook:7532 msgid "For instance, this code would be problematic:" msgstr "Exempelvis skulle denna kod vara problematisk:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7534 #, no-wrap msgid "" "std::cout << _(\"Current amount: \") << amount\n" " << _(\" Future: \") << future << std::endl;\n" "\n" "label.set_text(_(\"Really delete \") + filename + _(\" now?\"));" msgstr "" "std::cout << _(\"Current amount: \") << amount\n" " << _(\" Future: \") << future << std::endl;\n" "\n" "label.set_text(_(\"Really delete \") + filename + _(\" now?\"));" #. (itstool) path: section/para #: C/index-in.docbook:7539 #, fuzzy #| msgid "" #| "So you should either avoid this situation or use Glib::ustring::compose() which " #| "supports syntax such as:" msgid "" "So you should either avoid this situation or use Glib::ustring::compose() which supports " "syntax such as:" msgstr "" "Så du bör antingen undvika denna situation eller använda Glib::ustring::compose() som stöder " "syntax som:" #. (itstool) path: section/programlisting #: C/index-in.docbook:7544 #, no-wrap msgid "" "std::cout << Glib::ustring::compose(\n" " _(\"Current amount: %1 Future: %2\"), amount, future) << std::endl;\n" "\n" "label.set_text(Glib::ustring::compose(_(\"Really delete %1 now?\"), filename));" msgstr "" "std::cout << Glib::ustring::compose(\n" " _(\"Current amount: %1 Future: %2\"), amount, future) << std::endl;\n" "\n" "label.set_text(Glib::ustring::compose(_(\"Really delete %1 now?\"), filename));" #. (itstool) path: section/title #: C/index-in.docbook:7551 msgid "Assuming the displayed size of strings" msgstr "Anta den visade storleken för strängar" #. (itstool) path: section/para #: C/index-in.docbook:7553 msgid "" "You never know how much space a string will take on screen when translated. " "It might very possibly be twice the size of the original English string. " "Luckily, most gtkmm widgets will expand at " "runtime to the required size." msgstr "" "Du vet aldrig hur mycket utrymme en sträng kommer ta på skärmen då den " "översätts. Den kan mycket väl vara dubbla storleken mot för den ursprungliga " "engelska strängen. Lyckligtvis kommer de flesta gtkmm-komponenter vid körning expanderas till storleken som krävs." #. (itstool) path: section/title #: C/index-in.docbook:7557 msgid "Unusual words" msgstr "Ovanliga ord" #. (itstool) path: section/para #: C/index-in.docbook:7559 #, fuzzy msgid "" "You should avoid cryptic abbreviations, slang, or jargon. They are usually " "difficult to translate, and are often difficult for even native speakers to " "understand. For instance, prefer \"application\" to \"app\"" msgstr "" "Du bör undvika kryptiska förkortningar, slang eller jargong. De är oftast " "svåra att översätta, och är ofta svåra att förstå även för personer som har " "det som modersmål. Använd exempelvis hellre ”application” än ”app”" #. (itstool) path: section/title #: C/index-in.docbook:7565 msgid "Using non-ASCII characters in strings" msgstr "Använda tecken som inte är ASCII i strängar" # TODO: Is this still true?? #. (itstool) path: section/para #: C/index-in.docbook:7567 msgid "" "Currently, gettext does not support non-ASCII " "characters (i.e. any characters with a code above 127) in source code. For " "instance, you cannot use the copyright sign (©)." msgstr "" "För närvarande stöder gettext inte tecken som " "inte är ASCII (d.v.s. tecken med en kod ovanför 127) i källkod. Du kan " "exempelvis inte använda upphovsrättstecknet (©)." #. (itstool) path: section/para #: C/index-in.docbook:7573 msgid "" "To work around this, you could write a comment in the source code just " "before the string, telling the translators to use the special character if " "it is available in their languages. For English, you could then make an " "American English en_US.po translation which used that " "special character." msgstr "" "För att arbeta runt detta skulle du kunna skriva en kommentar i källkoden " "just innan strängen, och säga till översättarna att använda det speciella " "tecknet om det finns tillgängligt på deras språk. För engelska skulle du " "sedan kunna göra en en_US.po-översättning för " "amerikansk engelska som använder det speciella tecknet." #. (itstool) path: section/title #: C/index-in.docbook:7581 msgid "Getting help with translations" msgstr "Få hjälp med översättningar" #. (itstool) path: section/para #: C/index-in.docbook:7583 msgid "" "If your program is free software, there is a whole GNOME " "subproject devoted to helping you make translations, the GNOME " "Translation Project." msgstr "" "Om ditt program är fri programvara så finns det ett helt GNOME-underprojekt som är avsett för att hjälpa dig översätta, GNOME Translation Project." #. (itstool) path: section/para #: C/index-in.docbook:7588 msgid "" "The way it works is that you upload your source code to a git repository " "where translators can access it, then contact the gnome-i18n mailing list " "and ask to have your program added to the list of modules to translate." msgstr "" "Sättet detta fungerar är att du kan placera din källkod i ett git-förråd där " "översättare kan komma åt den, och sedan kontakta sändlistan gnome-i18n och " "be att ditt program ska läggas till i listan över moduler att översätta." #. (itstool) path: section/para #: C/index-in.docbook:7593 msgid "" "Then you make sure you update the file POTFILES.in in " "the po/ subdirectory (intltool-update -m can help with this) so that the translators always access updated " "myprogram.pot files, and simply freeze the strings at " "least a couple of days before you make a new release, announcing it on gnome-" "i18n. Depending on the number of strings your program contains and how " "popular it is, the translations will then start to tick in as " "languagename.po files." msgstr "" "Sedan ser du till att du uppdaterar filen POTFILES.in i " "underkatalogen po/ (intltool-update -m kan hjälpa dig med detta) så att översättarna alltid kommer åt " "uppdaterade mittprogram.pot-filer, och fryser helt " "enkelt strängarna åtminstone några dagar innan du släpper en ny utgåva, och " "meddelar det på gnome-i18n. Beroende på antalet strängar ditt program " "innehåller och på hur populärt det är kommer sedan översättningarna börja " "rassla in som språknamn.po-filer." #. (itstool) path: section/para #: C/index-in.docbook:7605 msgid "" "Note that most language teams only consist of 1-3 persons, so if your " "program contains a lot of strings, it might last a while before anyone has " "the time to look at it. Also, most translators do not want to waste their " "time (translating is a very time-consuming task) so if they do not assess " "your project as being really serious (in the sense that it is polished and " "being maintained) they may decide to spend their time on some other project." msgstr "" "Observera att de flesta språkgrupperna endast består av 1-3 personer, så om " "ditt program innehåller många strängar kan det dröja länge innan någon har " "tid att titta på det. De flesta översättare vill heller inte slösa bort sin " "tid (översättning är en väldigt tidskrävande uppgift) så om de inte bedömer " "ditt projekt som seriöst (i betydelsen att det är välpolerat och underhålls) " "så kan de bestämma sig för att lägga sin tid på något annat projekt." #. (itstool) path: chapter/title #. (itstool) path: section/title #: C/index-in.docbook:7617 C/index-in.docbook:7699 msgid "Custom Widgets" msgstr "Anpassade komponenter" #. (itstool) path: chapter/para #: C/index-in.docbook:7619 #, fuzzy msgid "" "gtkmm makes it very easy to derive new widgets by " "inheriting from an existing widget class, either by deriving from a " "container and adding child widgets, or by deriving from a single-item " "widget, and changing its behavior. But you might occasionally find that no " "suitable starting point already exists. In this case, you can implement a " "widget from scratch." msgstr "" "gtkmm gör det väldigt lätt att härleda nya " "komponenter genom arv från en befintlig komponentklass, antingen genom att " "härleda från en behållare och lägga till underordnade komponenter, eller " "genom att härleda från en enobjektskomponent och ändra dess beteende. Men " "emellanåt kan du upptäcka att ingen lämplig startpunkt finns. I så fall kan " "du implementera en komponent från grunden." #. (itstool) path: section/title #: C/index-in.docbook:7626 msgid "Custom Containers" msgstr "Anpassade behållare" #. (itstool) path: listitem/para #: C/index-in.docbook:7631 msgid "" "get_request_mode_vfunc(): Return what Gtk::" "SizeRequestMode is preferred by the container." msgstr "" "get_request_mode_vfunc(): Returnera vilket " "Gtk::SizeRequestMode som föredras av behållaren." #. (itstool) path: listitem/para #: C/index-in.docbook:7632 #, fuzzy msgid "" "measure_vfunc(): Calculate the minimum and natural " "width or height of the container." msgstr "" "measure_vfunc(): Beräkna minsta och naturlig bredd " "eller höjd på behållaren." #. (itstool) path: listitem/para #: C/index-in.docbook:7633 #, fuzzy msgid "" "size_allocate_vfunc(): Position the child widgets, " "given the height and width that the container has actually been given." msgstr "" "size_allocate_vfunc(): Positionera de underordnade " "komponenterna, givet höjden och bredden som behållaren faktiskt givits." #. (itstool) path: section/para #: C/index-in.docbook:7628 #, fuzzy msgid "" "When deriving a custom container widget directly from Gtk::" "Widget, you should override the following virtual methods: <_:" "itemizedlist-1/>" msgstr "" "När du härleder en anpassad behållarkomponent direkt från Gtk::" "Widget bör du åsidosätta följande virtuella metoder: <_:" "itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:7637 #, fuzzy msgid "" "The get_request_mode_vfunc(), " "measure_vfunc(), and " "size_allocate_vfunc() virtual methods control the " "layout of the child widgets. For instance, if your container has 2 child " "widgets, with one below the other, your " "get_request_mode_vfunc() might request height-for-" "width layout. Then your measure_vfunc() might " "report the maximum of the widths of the child widgets when asked to report " "width, and it might report the sum of their heights when asked to report " "height. If you want padding between the child widgets then you would add " "that to the width and height too. Your widget's container will use this " "result to ensure that your widget gets enough space, and not less. By " "examining each widget's parent, and its parent, this logic will eventually " "decide the size of the top-level window." msgstr "" "De virtuella metoderna get_request_mode_vfunc(), " "measure_vfunc() och " "size_allocate_vfunc() styr layouten för de " "underordnade komponenterna. Om exempelvis din behållare har 2 underordnade " "komponenter, en under den andra, kanske din " "get_request_mode_vfunc() begär layouten height-for-" "width. Då kanske din measure_vfunc() rapporterar " "maximum av bredderna för de underordnade komponenterna då den ombes " "rapportera bredd, och rapportera summan av deras höjder då den ombes " "rapportera höjd. Om du vill ha utfyllnad mellan de underordnade " "komponenterna ska du lägga till även det till bredden och höjden. Din " "komponents behållare kommer använda detta resultat för att säkerställa att " "din komponent från tillräckligt utrymme och inte mindre än så. Genom att " "undersöka varje komponents överordnad, och dess överordnad, kommer denna " "logik i slutändan bestämma storleken på toppnivåfönstret." #. (itstool) path: section/para #: C/index-in.docbook:7654 #, fuzzy msgid "" "You are not guaranteed to get the Gtk::SizeRequestMode " "that you request. Therefore measure_vfunc() must " "return sensible values for all reasonable values of its input parameters. " "For a description of measure_vfunc()'s parameters " "see also the description of Gtk::Widget::measure(), " "which may be better documented than measure_vfunc()." msgstr "" "Du är inte garanterad att få det Gtk::SizeRequestMode som " "du begär. Därför måste measure_vfunc() returnera " "rimliga värden för alla vettiga värden på dess indataparametrar. För en " "beskrivning av measure_vfunc():s parametrar kan du " "även se beskrivningen av Gtk::Widget::measure(), " "som kan vara bättre dokumenterad än measure_vfunc()." #. (itstool) path: section/para #: C/index-in.docbook:7661 #, fuzzy msgid "" "size_allocate_vfunc() receives the actual height " "and width that the parent container has decided to give to your widget. This " "might be more than the minimum, or even more than the natural size, for " "instance if the top-level window has been expanded. You might choose to " "ignore the extra space and leave a blank area, or you might choose to expand " "your child widgets to fill the space, or you might choose to expand the " "padding between your widgets. It's your container, so you decide." msgstr "" "size_allocate_vfunc() tar emot den faktiska höjden " "och bredden som den överordnade behållaren bestämt sig för att ge din " "komponent. Detta kan vara mer än minimum, eller till och med mer än den " "naturliga storleken, exempelvis om toppnivåfönstret har expanderats. Du kan " "välja att ignorera det extra utrymmet och lämna tomt utrymme, eller så kan " "du välja att expandera dina underordnade komponenter så de fyller utrymmet, " "eller så kan du välja att expandera utfyllnaden mellan dina komponenter. Det " "är din behållare, så valet är ditt." #. (itstool) path: section/para #: C/index-in.docbook:7670 #, fuzzy msgid "" "Your container must unparent its children before the underlying C object (a " "gtkmm__GtkWidget) is finalized. If your container is " "used as a managed widget, it shall unparent its children in a " "Gtk::Widget::signal_destroy() handler (available " "since gtkmm 4.8). If your container is not " "managed, that signal handler is not called. Instead the children shall be " "unparented in the C++ destructor. If you want your container to be useful " "both ways, unparent the children both in the destructor and in a signal " "handler. See the example code." msgstr "" "Din behållare måste avföräldra sina underordnade innan det underliggande C-" "objektet (en gtkmm__GtkWidget) finaliseras. Om din " "behållare används som en hanterad komponent ska den avföräldra sina " "underordnade i en Gtk::Widget::signal_destroy()-" "hanterare (tillgänglig sedan gtkmm 4.8.0). Om din " "behållare inte hanteras anropas inte den signalhanteraren. I stället ska de " "underordnade avföräldras i C++-destruktorn. Om du vill att din behållare ska " "bara användbar på båda sätt så avföräldrar du de underordnade både i " "destruktorn och i en signalhanterare. Se exempelkoden." #. (itstool) path: section/para #: C/index-in.docbook:7682 #, fuzzy msgid "" "This example implements a container with child widgets, one above the other. " "Of course, in this case it would be far simpler just to use a vertical " "Gtk::Box or Gtk::Grid." msgstr "" "Detta exempel implementerar en behållare med två underordnade komponenter, " "en ovanför den andra. I detta fall skulle det förstås vara mycket enklare " "att bara använda en vertikal Gtk::Box eller " "Gtk::Grid." #. (itstool) path: figure/title #: C/index-in.docbook:7687 msgid "Custom Container" msgstr "Anpassad behållare" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:7689 #, fuzzy msgctxt "_" msgid "" "external ref='figures/custom_container.png' " "md5='865833944746eeb806eae028f0b2a25b'" msgstr "" "external ref='figures/custom_container.png' " "md5='5b4ae318725b6efbf5c6e1f7c94e6e04'" #. (itstool) path: section/para #: C/index-in.docbook:7693 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/para #: C/index-in.docbook:7701 #, fuzzy msgid "" "By deriving directly from Gtk::Widget you can do all " "the drawing for your widget directly, instead of just arranging child " "widgets. For instance, a Gtk::Label draws the text of " "the label, but does not do this by using other widgets." msgstr "" "Genom att härleda direkt från Gtk::Widget kan du göra " "all ritning för din komponent direkt i stället för att bara arrangera " "underordnade komponenter. Exempelvis ritar en Gtk::Label texten för etiketten, men gör inte detta genom att använda andra " "komponenter." #. (itstool) path: listitem/para #: C/index-in.docbook:7712 #, fuzzy msgid "" "get_request_mode_vfunc(): (optional) Return what " "Gtk::SizeRequestMode is preferred by the widget." msgstr "" "get_request_mode_vfunc(): (valfri) Returnera vilket " "Gtk::SizeRequestMode som föredras av komponenten." #. (itstool) path: listitem/para #: C/index-in.docbook:7713 #, fuzzy msgid "" "measure_vfunc(): Calculate the minimum and natural " "width or height of the widget." msgstr "" "measure_vfunc(): Beräkna den minsta och naturliga " "bredden eller höjden för komponenten." #. (itstool) path: listitem/para #: C/index-in.docbook:7714 #, fuzzy msgid "" "size_allocate_vfunc(): (optional) Position the " "widget, given the height and width that it has actually been given." msgstr "" "size_allocate_vfunc(): (valfri) Positionera " "komponenten, givet den höjd och bredd som den faktiskt har givits." #. (itstool) path: listitem/para #: C/index-in.docbook:7715 msgid "on_realize(): (optional)" msgstr "on_realize(): (valfri)" #. (itstool) path: listitem/para #: C/index-in.docbook:7716 msgid "on_unrealize(): (optional)" msgstr "on_unrealize(): (valfri)" #. (itstool) path: listitem/para #: C/index-in.docbook:7717 msgid "on_map(): (optional)" msgstr "on_map(): (valfri)" #. (itstool) path: listitem/para #: C/index-in.docbook:7718 msgid "on_unmap(): (optional)" msgstr "on_unmap(): (valfri)" #. (itstool) path: listitem/para #: C/index-in.docbook:7719 #, fuzzy msgid "" "snapshot_vfunc(): Create a render node, e.g. a " "Cairo::Context node, and draw on it." msgstr "" "snapshot_vfunc(): Skapa en renderingsnod, t.ex. en " "Cairo::Context-nod, och rita på den." #. (itstool) path: section/para #: C/index-in.docbook:7707 #, fuzzy msgid "" "When deriving from Gtk::Widget, you should override " "the following virtual methods. The methods marked (optional) need not be " "overridden in all custom widgets. The base class's methods may be " "appropriate. <_:itemizedlist-1/>" msgstr "" "När du härleder från Gtk::Widget bör du åsidosätta " "följande virtuella metoder. Metoderna som markerats (valfri) behöver inte " "åsidosättas i alla anpassade komponenter. Basklassens metoder kan vara " "lämpliga. <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:7723 #, fuzzy msgid "" "The first 3 methods in the previous table are also overridden in custom " "containers. They are briefly described in the Custom Containers section." msgstr "" "De tre första metoderna i föregående tabell åsidosätts också i anpassade " "behållare. De beskrivs kort i avsnittet Anpassade behållare." #. (itstool) path: section/title #: C/index-in.docbook:7729 #, fuzzy msgid "Class Init and Instance Init Functions" msgstr "Initieringsfunktioner för klasser och instanser" #. (itstool) path: section/para #: C/index-in.docbook:7731 #, fuzzy msgid "" "Some GTK functions, if called at all, must be " "called from the class init function. Some other GTK functions, if called, must be called from the instance init " "function. If your custom widget must call any of those functions, you can " "derive a class from Glib::ExtraClassInit and derive " "your custom class from that class. The custom CSS name example shows how that's done." msgstr "" "Vissa GTK-funktioner måste, om de anropas över " "huvud taget, anropas från klassens init-funktion. Några andra " "GTK-funktioner måste, om de anropas , anropas " "från instansens init-funktion. Om din anpassade komponent måste anropa någon " "av dessa funktioner kan du härleda en klass från Glib::" "ExtraClassInit och härleda din anpassade klass från den klassen. " "Följande exempel visar hur detta görs." #. (itstool) path: section/para #: C/index-in.docbook:7743 msgid "This example implements a widget which draws Penrose triangles." msgstr "Detta exempel implementerar en komponent som ritar Penrose-trianglar." #. (itstool) path: figure/title #: C/index-in.docbook:7746 msgid "Custom Widget" msgstr "Anpassad komponent" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:7748 #, fuzzy msgctxt "_" msgid "" "external ref='figures/custom_widget.png' " "md5='30f9b406a95d5b0d17b6fc081c359b98'" msgstr "" "external ref='figures/custom_widget.png' " "md5='30f9b406a95d5b0d17b6fc081c359b98'" #. (itstool) path: section/para #: C/index-in.docbook:7752 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #: C/index-in.docbook:7757 #, fuzzy #| msgid "Custom Containers" msgid "Custom CSS Names" msgstr "Anpassade behållare" #. (itstool) path: section/para #: C/index-in.docbook:7759 msgid "" "Many aspects of the look of widgets are controlled by CSS (Cascading Style " "Sheet) files. With CSS files you can choose color, font, line thickness, " "etc. If you give some widgets their own names or their own CSS classes, you " "can define CSS rules that apply only to those widgets, for instance certain " "buttons, without affecting other similar widgets." msgstr "" #. (itstool) path: section/title #: C/index-in.docbook:7766 msgid "CSS Node Name, Widget Name, CSS Class Name" msgstr "" #. (itstool) path: listitem/para #: C/index-in.docbook:7770 msgid "" "gtk_widget_class_set_css_name() can only be called " "from the class init function. It sets the CSS node name of all instances of " "a class (a GType). See the Class " "Init and Instance Init Functions section." msgstr "" #. (itstool) path: listitem/para #: C/index-in.docbook:7774 msgid "" "Gtk::Widget::set_name() can be called from a C++ " "constructor. It sets the name of a widget instance." msgstr "" #. (itstool) path: listitem/para #: C/index-in.docbook:7777 msgid "" "Gtk::Widget::add_class_name() can be called from a " "C++ constructor. It adds the name of a CSS class, used by a widget instance." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:7768 msgid "" "There are three ways of referring from a widget to data in a CSS file: <_:" "itemizedlist-1/> The following example shows a button with its own CSS node " "name, a label with a widget name and a label that uses its own CSS class." msgstr "" #. (itstool) path: section/title #: C/index-in.docbook:7786 msgid "Custom Style Information" msgstr "Anpassad stilinformation" #. (itstool) path: section/para #: C/index-in.docbook:7788 msgid "" "To add a style sheet to an application, use one of the Gtk::" "CssProvider::load_from_*() methods. Then add it with " "Gtk::StyleProvider::add_provider_for_display() " "(available since gtkmm 4.10) or Gtk::" "StyleContext::add_provider_for_display(). Gtk::" "StyleContext also contains methods to read some style " "information, but this class is deprecated since gtkmm 4.10." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:7795 msgid "CSS files are described in the documentation of GTK." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:7801 msgid "" "This example implements a button and two labels with custom style " "information." msgstr "" #. (itstool) path: figure/title #: C/index-in.docbook:7804 #, fuzzy #| msgid "Custom Container" msgid "Custom CSS Name" msgstr "Anpassad behållare" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:7806 #, fuzzy msgctxt "_" msgid "" "external ref='figures/custom_css_name.png' " "md5='fb3d968b1fd40eb219e5a78946adff0f'" msgstr "" "external ref='figures/custom_container.png' " "md5='5b4ae318725b6efbf5c6e1f7c94e6e04'" #. (itstool) path: section/para #: C/index-in.docbook:7810 #, fuzzy #| msgid "" #| "Source Code" msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:7817 msgid "Multi-threaded programs" msgstr "Flertrådade program" #. (itstool) path: section/title #: C/index-in.docbook:7820 msgid "The constraints" msgstr "Begränsningarna" #. (itstool) path: footnote/para #: C/index-in.docbook:7831 #, fuzzy msgid "" "These interactions arise from the fact that, amongst other things, a class " "inheriting from sigc::trackable will, via that " "inheritance, have a std::list object keeping track of " "slots created by calls to sigc::mem_fun() representing " "any of its non-static methods (more particularly it keeps a list of " "callbacks which will null the connected slots on its destruction). Each " "sigc::slot object also keeps, via sigc::" "slot_rep, its own sigc::trackable object " "to track any sigc::connection objects which it needs " "to inform about its demise, and also has a function to deregister itself " "from any sigc::trackable on disconnection or " "destruction. sigc::signal objects also keep lists of " "slots, which will be updated by a call to their connect() method or calls to any sigc::connection " "object relating to such a connection." msgstr "" "Dessa interaktioner kommer från det faktum att, bland annat, en klass som " "ärver från sigc::trackable kommer via det arvet ha " "ett std::list-objekt som håller koll på fack som " "skapas av anrop till sigc::mem_fun() som representerar " "dess icke-statiska metoder (mer specifikt behåller det en lista över " "återanrop som kommer sätta de anslutna till facken till null vid dess " "förstörelse). Varje sigc::slot-objekt behåller också, " "via sigc::slot_rep, sitt eget sigc::" "trackable-objekt för att spåra sigc::connection-objekt som det behöver informera om sitt frånfälle, och också har " "en funktion för att avregistrera sig själv från alla sigc::" "trackable vid frånkopplande eller förstörelse. sigc::" "signal-objekt behåller också en lista över fack som kommer " "uppdateras av ett anrop till deras connect()-metod " "eller anrop till sigc::connection-objekt som är " "relaterade till en sådan anslutning." #. (itstool) path: section/para #: C/index-in.docbook:7822 #, fuzzy msgid "" "Care is required when writing programs based on gtkmm using multiple threads of execution, arising from the fact that " "libsigc++, and in particular sigc::" "trackable, are not thread-safe. That's because none of the " "complex interactions that occur behind the scenes when using " "libsigc++ are protected by a mutex or other means " "of synchronization. <_:footnote-1/>" msgstr "" "Omsorg krävs vid skrivning av program som är baserade på att " "gtkmm använder flera exekveringstrådar, vilket " "kommer från faktumet att libsigc++, och i " "synnerhet sigc::trackable, inte är trådsäkert. Detta " "är för att ingen av de komplexa interaktioner som sker bakom scenen när " "libsigc++ används skyddas av ett mutex eller " "någon annan sorts synkronisering. <_:footnote-1/>" #. (itstool) path: section/title #: C/index-in.docbook:7855 msgid "The rules" msgstr "Reglerna" #. (itstool) path: section/para #: C/index-in.docbook:7857 #, fuzzy msgid "" "This requires a number of rules to be observed when writing multi-threaded " "programs using gtkmm. These are set out below, " "but one point to note is that extra care is required when deriving classes " "from sigc::trackable, because the effects are " "unintuitive (see particularly points 4 and 5 below)." msgstr "" "Detta kräver att ett antal regler följs när flertrådade program skrivs med " "gtkmm. Dessa beskrivs nedan, men punkt att notera " "är att extra försiktighet krävs vid härledning av klasser från " "sigc::trackable för att effekterna inte är intuitiva " "(se främst punkterna 4 och 5 nedan)." #. (itstool) path: listitem/para #: C/index-in.docbook:7868 #, fuzzy msgid "" "Use Glib::Dispatcher to invoke gtkmm functions from worker threads (this is dealt with in more " "detail in the next section)." msgstr "" "Använd Glib::Dispatcher för att köra " "gtkmm-funktioner från arbetartrådar (detta " "hanteras mer detaljerat i nästa avsnitt)." # TODO: operator() ? #. (itstool) path: listitem/para #: C/index-in.docbook:7876 #, fuzzy msgid "" "A sigc::signal object should be regarded as owned by " "the thread which created it. Only that thread should connect a " "sigc::slot object to the signal object, and only that " "thread should emit() or call operator()" "() on the signal, or null any connected sigc::slot object. It follows (amongst other things) that any signal object " "provided by a gtkmm widget should only be " "operated on in the main GUI thread and any object deriving from " "sigc::trackable having its non-static methods " "referenced by slots connected to the signal object should only be destroyed " "in that thread." msgstr "" "Ett sigc::signal-objekt ska anses som ägt av tråden " "som skapade det. Endast den tråden ska ansluta ett sigc::slot-objekt till signalobjektet, och endast den tråden ska anropa " "emit() eller operator()() " "på signalen, eller göra några anslutna sigc::slot-" "objekt till null. Det följer (bland annat) att varje signalobjekt som " "tillhandahålls av en gtkmm-komponent endast ska " "opereras på i GUI-huvudtråden och att alla objekt som härleder från " "sigc::trackable och som har sina icke-statiska " "metoder refererade till av fack anslutna till signalobjektet endast ska " "förstöras i den tråden." #. (itstool) path: listitem/para #: C/index-in.docbook:7892 #, fuzzy msgid "" "Any sigc::connection object should be regarded as " "owned by the thread in which the method returning the sigc::" "connection object was called. Only that thread should call " "sigc::connection methods on the object." msgstr "" "Alla sigc::connection-objekt ska anses ägas av tråden " "i vilken metoden som returnerar sigc::connection-" "objektet anropades. Endast den tråden ska anropa sigc::" "connection-metoder på objektet." #. (itstool) path: listitem/para #: C/index-in.docbook:7902 #, fuzzy msgid "" "A sigc::slot object created by a call to " "sigc::mem_fun() which references a method of a class " "deriving from sigc::trackable should never be copied " "to another thread, nor destroyed by a different thread than the one which " "created it." msgstr "" "Ett sigc::slot-objekt skapat av ett anrop till " "sigc::mem_fun() som refererar en metod av en klass som " "härleds från sigc::trackable bör aldrig kopieras till " "en annan tråd, och inte heller förstöras av en annan tråd än den som skapade " "det." #. (itstool) path: listitem/para #: C/index-in.docbook:7912 #, fuzzy msgid "" "If a particular class object derives from sigc::trackable, only one thread should create sigc::slot " "objects representing any of the class's non-static methods by calling " "sigc::mem_fun(). The first thread to create such a slot " "should be regarded as owning the relevant object for the purpose of creating " "further slots referencing any of its non-static methods " "using that function, or nulling those slots by disconnecting them or " "destroying the trackable object." msgstr "" "Om ett visst klassobjekt härleds från sigc::trackable " "ska bara en tråd skapa sigc::slot-objekt som " "representerar någon av klassens icke-statiska metoder genom att anropa " "sigc::mem_fun(). Den första tråden som skapar ett " "sådant fack ska anses äga det relevanta objektet i syfte att skapa vidare " "fack som refererar något av dess icke-statiska metoder " "som använder den funktionen, eller göra dessa fack till null genom att " "koppla från dem eller förstöra det spårbara objektet." #. (itstool) path: listitem/para #: C/index-in.docbook:7926 #, fuzzy msgid "" "Although glib is itself thread-safe, any " "glibmm wrappers which use libsigc++ will not be. So for example, only the thread in which a main " "loop runs should call Glib::SignalIdle::connect(), " "Glib::SignalIO::connect(), Glib::" "SignalTimeout::connect(), Glib::SignalTimeout::" "connect_seconds for that main loop, or manipulate any " "sigc::connection object returned by them." msgstr "" "Även om glib i sig är trådsäkert så kommer " "glibmm-omslag som använder libsigc+" "+ inte vara det. Så exempelvis bör endast tråden som en " "huvudslinga körs anropa Glib::SignalIdle::connect(), Glib::SignalIO::connect(), " "Glib::SignalTimeout::connect(), Glib::" "SignalTimeout::connect_seconds för den huvudslingan, eller " "manipulera några sigc::connection-objekt som " "returneras av dem." #. (itstool) path: listitem/para #: C/index-in.docbook:7938 #, fuzzy msgid "" "The connect*_once() variants, Glib::SignalIdle::connect_once(), Glib::SignalTimeout::connect_once(), " "Glib::SignalTimeout::connect_seconds_once(), are " "thread-safe for any case where the slot is not created by a call to " "sigc::mem_fun() which represents a method of a class " "deriving from sigc::trackable." msgstr "" "connect*_once()-varianterna, Glib::SignalIdle::connect_once(), Glib::SignalTimeout::connect_once(), " "Glib::SignalTimeout::connect_seconds_once() är " "trådsäkra för alla fall där facket inte skapas av ett anrop till " "sigc::mem_fun() som representerar en metod av en klass " "som härleds från sigc::trackable." #. (itstool) path: section/title #: C/index-in.docbook:7956 msgid "Using Glib::Dispatcher" msgstr "Använda Glib::Dispatcher" # TODO: operator() ? #. (itstool) path: section/para #: C/index-in.docbook:7958 #, fuzzy msgid "" "The slots connected to sigc::signal objects execute " "in the thread which calls emit() or " "operator()() on the signal. Glib::" "Dispatcher does not behave this way: instead its connected slots " "execute in the thread in which the Glib::Dispatcher " "object was constructed (which must have a glib main loop). If a " "Glib::Dispatcher object is constructed in the main " "GUI thread (which will therefore be the receiver thread), any worker thread " "can emit on it and have the connected slots safely execute " "gtkmm functions." msgstr "" "Facken anslutna till sigc::signal-objekt exekverar i " "tråden som anropar emit() eller " "operator()() på signalen. Glib::" "Dispatcher beter sig inte på detta sätt: i stället exekverar " "dess anslutna fack i tråden i vilken Glib::Dispatcher-" "objektet konstruerades (vilken måste ha en glib-mainloop). Om ett " "Glib::Dispatcher-objekt konstrueras i GUI-huvudtråden " "(vilken därför kommer vara mottagartråden), kommer alla arbetartrådar kunna " "sända ut på det och ha att de anslutna facken på ett säkert sätt kan " "exekvera gtkmm-funktioner." #. (itstool) path: section/para #: C/index-in.docbook:7972 #, fuzzy msgid "" "Some thread safety rules on the use of Glib::Dispatcher still apply. As mentioned, a Glib::Dispatcher object must be constructed in the receiver thread (the thread in " "whose main loop it will execute its connected slots). By default this is the " "main program thread, although there is a Glib::Dispatcher constructor which can take the Glib::MainContext object of any thread which has a main loop. Only the receiver " "thread should call connect() on the " "Glib::Dispatcher object, or manipulate any related " "sigc::connection object, unless additional " "synchronization is employed. However, any worker thread can safely emit on " "the Glib::Dispatcher object without any locking once " "the receiver thread has connected the slots, provided that it is constructed " "before the worker thread is started (if it is constructed after the thread " "has started, additional synchronization will normally be required to ensure " "visibility)." msgstr "" "Några trådsäkerhetsregler för användningen av Glib::Dispatcher gäller fortfarande. Som nämnt måste ett Glib::" "Dispatcher-objekt konstrueras i mottagartråden (tråden i vars " "huvudslinga den kommer exekvera sina ansluta fack). Som standard är detta " "huvudprogramtråden, men det finns en Glib::Dispatcher-" "konstruktor som kan ta Glib::MainContext-objektet för " "vilken tråd som helst som har en huvudslinga. Endast mottagartråden ska " "anropa connect()Glib::Dispatcher-objektet eller manipulera något relaterat sigc::" "connection-objekt, om inte ytterligare synkronisering utförs. " "Alla arbetartrådar kan dock säkert sända ut på Glib::Dispatcher-objektet utan någon låsning när mottagartråden har anslutit " "facken, förutsatt att den konstruerats innan arbetartråden startats (om den " "har konstruerats efter arbetartråden startats kommer ytterligare " "synkronisering vanligen behövas för att försäkra synlighet)." #. (itstool) path: section/para #: C/index-in.docbook:7992 #, fuzzy msgid "" "Aside from the fact that connected slots always execute in the receiver " "thread, Glib::Dispatcher objects are similar to " "sigc::signal<void()> objects. They therefore " "cannot pass unbound arguments nor return a value. The best way to pass " "unbound arguments is with a thread-safe (asynchronous) queue. At the time of " "writing glibmm does not have one, although most " "people writing multi-threaded code will have one available to them (they are " "relatively easy to write although there are subtleties in combining thread " "safety with strong exception safety)." msgstr "" "Förutom faktum att anslutna fack alltid exekverar i mottagartråden så liknar " "Glib::Dispatcher-objekts sigc::signal<" "void()>-objekt. De kan därför varken skicka obundna argument " "eller returnera ett värde. Det bästa sättet att skicka obundna argument är " "med en trådsäker (asynkron) kö. I skrivande stund har glibmm inte någon, även om de flesta som skriver flertrådad kod kommer " "ha en tillgänglig (de är relativt lätta att skriva även om det finns subtila " "saker att tänka på vid kombination av trådsäkerhet med stark " "undantagssäkerhet)." # TODO: emitted on by?? #. (itstool) path: section/para #: C/index-in.docbook:8005 #, fuzzy msgid "" "A Glib::Dispatcher object can be emitted on by the " "receiver thread as well as by a worker thread, although this should be done " "within reasonable bounds. On unix-like systems Glib::Dispatcher objects share a single common pipe, which could in theory at " "least fill up on a very heavily loaded system running a program with a very " "large number of Dispatcher objects in use. Were the " "pipe to fill up before the receiver thread's main loop has had an " "opportunity to read from it to empty it, and the receiver thread attempt to " "emit and so write to it when it is in that condition, the receiver thread " "would block on the write, so deadlocking. Where the receiver thread is to " "emit, a normal sigc::signal<void()> object " "could of course be used instead." msgstr "" "Ett Glib::Dispatcher-objekt kan sändas ut av " "mottagartråden såväl som av en arbetartråd, även om detta ska göras inom " "rimliga gränser. På unix-liknande system delar Glib::Dispatcher-objekt ett gemensamt rör, vilket i alla fall i teorin skulle " "kunna bli fullt på ett system under väldigt tung belastning som kör ett " "program med ett väldigt stort antal Dispatcher-objekt " "som används. Om röret skulle fyllas innan mottagartrådens huvudslinga har " "haft en chans att läsa från det för att tömma det, och mottagartråden " "försöker att sända ut och skriva till det när det är i det tillståndet, så " "skulle mottagartråden blockera på skrivningen, vilket ger ett dödläge. Där " "mottagartråden ska sända ut skulle förstås ett vanligt sigc::" "signal<void()>-objekt användas i stället." #. (itstool) path: section/para #: C/index-in.docbook:8026 #, fuzzy msgid "" "This is an example program with two threads, one GUI thread, like in all " "gtkmm programs, and one worker thread. The worker " "thread is created when you press the Start work button. " "It is deleted when the work is finished, when you press the Stop " "work button, or when you press the Quit button." msgstr "" "Detta är ett exempelprogram med två trådar, en GUI-tråd, som i alla " "gtkmm-program, och en arbetartråd. Arbetartråden " "skapas när du trycker på knappen Start work. Den tas bort " "när arbetet är slutfört, när du trycker på knappen Stop work eller när du trycker på knappen Quit." #. (itstool) path: section/para #: C/index-in.docbook:8034 #, fuzzy msgid "" "A Glib::Dispatcher is used for sending notifications " "from the worker thread to the GUI thread. The ExampleWorker class contains data which is accessed by both threads. This data " "is protected by a std::mutex. Only the GUI thread " "updates the GUI." msgstr "" "En Glib::Dispatcher används för att skicka " "aviseringar från arbetartråden till GUI-tråden. Klassen " "ExampleWorker innehåller data som koms åt av båda " "trådar. Dessa data skuddas av en std::mutex. Endast " "GUI-tråden uppdaterar GUI:t." #. (itstool) path: section/para #: C/index-in.docbook:8042 #, fuzzy msgid "" "Compiling and linking a multi-threaded program can require special compiler " "and linker options. If you use the g++ compiler, " "add the -pthread option. Other compilers may require " "other options. If you build with meson, it " "handles the multi-threading complications for you, if you add " "dependency('threads')." msgstr "" "Kompilering och länkning av ett flertrådat program kan kräva speciella " "kompilator- och länkar-flaggor. Om du använder kompilatorn g++ lägger du till flaggan -pthread. Andra " "kompilatorer kan kräva andra flaggor. Om du bygger med meson hanterar det komplikationerna med flertrådning åt dig om du " "lägger till dependency('threads')." #. (itstool) path: figure/title #: C/index-in.docbook:8051 msgid "Multi-Threaded Program" msgstr "Flertrådat program" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8053 #, fuzzy msgctxt "_" msgid "" "external ref='figures/multithread.png' md5='acc87c2afb17321ab098b7f0b8a46b27'" msgstr "" "external ref='figures/multithread.png' md5='acc87c2afb17321ab098b7f0b8a46b27'" #. (itstool) path: section/para #: C/index-in.docbook:8057 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:8064 msgid "Recommended Techniques" msgstr "Rekommenderade tekniker" #. (itstool) path: chapter/para #: C/index-in.docbook:8066 msgid "" "This section is simply a gathering of wisdom, general style guidelines and " "hints for creating gtkmm applications." msgstr "" "Detta avsnitt är helt enkelt samlad kunskap, allmänna stilriktlinjer och " "tips för att skapa gtkmm-program." #. (itstool) path: chapter/para #: C/index-in.docbook:8070 #, fuzzy msgid "" "Use Meson! It is your friend :) It examines C and " "C++ files, determines how they depend on each other, and generates " "build.ninja or an equivalent file so the files can be " "compiled in the correct order. Meson permits " "automatic configuration of software installation, handling a large number of " "system quirks to increase portability." msgstr "" "AnvändMeson! Det är din vän :) Det undersöker C- " "och C++-filer, avgör hur de beror på varandra, och genererar build." "ninja eller en motsvarande fil så att filerna kan kompileras i " "rätt ordning. Meson tillåter automatisk " "konfiguration av programvaruinstallation, och hanterar ett stort antal " "systemabrovinkar för att öka portabilitet." #. (itstool) path: chapter/para #: C/index-in.docbook:8078 #, fuzzy msgid "" "Subclass Widgets to better organize your code. You should probably subclass " "your main Window at least. Then you can make your " "child Widgets and signal handlers members of that class." msgstr "" "Gör underklasser till Widget-komponenter för att bättre organisera din kod. " "Du bör troligen åtminstone göra en underklass till ditt Window. Sedan kan du göra dina underordnade Widget och signalhanterare " "till medlemmar av den klassen." #. (itstool) path: chapter/para #: C/index-in.docbook:8083 #, fuzzy msgid "" "Create your own signals instead of passing pointers around. Objects can " "communicate with each other via signals and signal handlers. This is much " "simpler than objects holding pointers to each other and calling each other's " "methods. gtkmm's classes use special versions of " "sigc::signal, but you should use normal " "sigc::signals, as described in the " "libsigc++ documentation." msgstr "" "Skapa dina egna signaler i stället för att skicka runt pekare. Objekt kan " "kommunicera med varandra via signaler och signalhanterare. Detta är mycket " "enklare än objekt som håller pekare till varandra och anropar varandras " "metoder. gtkmms klasser använder specialversioner " "av sigc::signal, men du bör använda vanliga " "sigc::signal-signaler, som beskrivet i " "libsigc++-dokumentationen." #. (itstool) path: section/title #: C/index-in.docbook:8092 msgid "Application Lifetime" msgstr "Livslängd för program" #. (itstool) path: section/para #: C/index-in.docbook:8093 #, fuzzy msgid "" "Most applications will have only one Window, or only " "one main window. These applications can use Gtk::Application::" "make_window_and_run(int argc, char** argv, T_Args&&... args). It creates and shows a window. When the window is hidden, " "make_window_and_run() deletes the window and " "returns to the caller. This might happen when the user closes the window, or " "when your code decides to hide the window with " "set_visible(false). You can prevent the user from " "closing the window (for instance, if there are unsaved changes) by " "overriding Gtk::Window::on_close_request()." msgstr "" "De flesta program kommer endast ha ett Window, eller " "endast ett huvudfönster. Dessa program kan använda Gtk::" "Application::make_window_and_run(int argc, char** argv, T_Args&&... " "args). Det skapar och visar ett fönster. När fönstret är dolt " "tar make_window_and_run() bort fönstret och " "returnerar till anroparen. Detta kan hända när användaren stänger fönstret, " "eller när din kod bestämmer sig för att köra hide() " "på fönstret. Du kan förhindra användaren från att stränga fönstret " "(exempelvis om det finns osparade ändringar) genom att åsidosätta " "Gtk::Window::on_close_request()." #. (itstool) path: section/para #: C/index-in.docbook:8102 msgid "Most of our examples use this technique." msgstr "De flesta av våra exempel använder denna teknik." #. (itstool) path: section/title #: C/index-in.docbook:8106 msgid "Using a gtkmm widget" msgstr "Använda en gtkmm-komponent" #. (itstool) path: section/para #: C/index-in.docbook:8108 msgid "" "Our examples all tend to have the same structure. They follow these steps " "for using a Widget:" msgstr "" "Våra exempel tenderar att ha samma struktur. De följer dessa steg för att " "använda en Widget:" #. (itstool) path: listitem/para #: C/index-in.docbook:8117 #, fuzzy msgid "" "Declare a variable of the type of Widget you wish to " "use, generally as member variable of a derived container class. You could " "also declare a pointer to the widget type, and then create it with " "new or Gtk::make_managed() in your " "code." msgstr "" "Deklarera en variabel av typen av Widget som du vill " "använda, allmänt som medlemsvariabel av en härledd behållarklass. Du skulle " "också kunna deklarera en pekare till komponenttypen och sedan skapa den med " "new eller Gtk::make_managed() i din " "kod." #. (itstool) path: listitem/para #: C/index-in.docbook:8126 #, fuzzy msgid "" "Set the attributes of the widget. If the widget has no default constructor, " "then you will need to initialize the widget in the initializer list of your " "container class's constructor." msgstr "" "Ställ in komponentens attribut. Om komponenten inte har någon " "standardkonstruktor kommer du behöva initiera komponenten i initierarlistan " "för din behållarklass konstruktor." #. (itstool) path: listitem/para #: C/index-in.docbook:8134 msgid "Connect any signals you wish to use to the appropriate handlers." msgstr "Anslut alla signaler som du vill använda till lämpliga hanterare." #. (itstool) path: listitem/para #: C/index-in.docbook:8140 msgid "" "Pack the widget into a container using the appropriate call, e.g. " "Gtk::Box::append()." msgstr "" "Packa komponenten i en behållare med lämpligt anrop, t.ex. Gtk::" "Box::append()." #. (itstool) path: section/para #: C/index-in.docbook:8150 #, fuzzy msgid "" "If you don't want all widgets to be shown, call Gtk::Widget::" "set_visible(false) on the widgets that you don't want to show. " "If a container widget is hidden, all of its child widgets are also hidden, " "even if set_visible(false) is not called on the " "child widgets." msgstr "" "Om du inte vill att alla komponenter ska visas anropar du Gtk::" "Widget::hide() på komponenterna som du inte vill ska visas. Om " "en behållarkomponent är dold så är även alla dess underordnade komponenter " "dolda, även om hide() inte anropas på de " "underordnade komponenterna." #. (itstool) path: chapter/title #: C/index-in.docbook:8161 msgid "Building applications" msgstr "Bygga program" #. (itstool) path: chapter/para #: C/index-in.docbook:8163 #, fuzzy msgid "" "This chapter is similar to Building applications and " "following sections in the Getting Started chapter in the GTK " "documentation. The same application is built, but gtkmm is used instead of GTK." msgstr "" "Detta kapitel liknar Bygga program och följande avsnitt " "i Komma " "igång-kapitlet i GTK-dokumentationen. Samma program byggs, men " "gtkmm används i stället för GTK." #. (itstool) path: varlistentry/term #: C/index-in.docbook:8173 msgid "The binary file" msgstr "Binärfilen" #. (itstool) path: listitem/para #: C/index-in.docbook:8174 msgid "This gets installed in /usr/bin." msgstr "Denna installeras i /usr/bin." #. (itstool) path: varlistentry/term #: C/index-in.docbook:8177 #, fuzzy msgid "A desktop file" msgstr "En desktop-fil" #. (itstool) path: listitem/para #: C/index-in.docbook:8178 #, fuzzy msgid "" "The desktop file provides important information about the application to the " "desktop shell, such as its name, icon, D-Bus name, commandline to launch it, " "etc. It is installed in /usr/share/applications." msgstr "" "Desktop-filen tillhandahåller viktig information om programmet till " "skrivbordsskalet, som dess namn, ikon, D-Bus-namn, kommandorad för att köra " "den o.s.v. Den installeras i /usr/share/applications." #. (itstool) path: varlistentry/term #: C/index-in.docbook:8183 msgid "An icon" msgstr "En ikon" #. (itstool) path: listitem/para #: C/index-in.docbook:8184 msgid "" "The icon gets installed in /usr/share/icons/hicolor/48x48/apps, where it will be found regardless of the current theme." msgstr "" "Ikonen installeras i /usr/share/icons/hicolor/48x48/apps, där den kommer hittas oavsett aktuellt tema." #. (itstool) path: varlistentry/term #: C/index-in.docbook:8188 msgid "A settings schema" msgstr "Ett inställningsschema" #. (itstool) path: listitem/para #: C/index-in.docbook:8189 msgid "" "If the application uses Gio::Settings, it will " "install its schema in /usr/share/glib-2.0/schemas, so " "that tools like dconf-editor can find it." msgstr "" "Om programmet använder Gio::Settings kommer det " "installera sitt schema i /usr/share/glib-2.0/schemas så " "att verktyg som dconf-editor kan hitta det." #. (itstool) path: varlistentry/term #: C/index-in.docbook:8194 msgid "Other resources" msgstr "Andra resurser" #. (itstool) path: listitem/para #: C/index-in.docbook:8195 #, fuzzy msgid "" "Other files, such as Gtk::Builder ui files, are best " "loaded from resources stored in the application binary itself. This " "eliminates the need for most of the files that would traditionally be " "installed in an application-specific location in /usr/share." msgstr "" "Andra filer som Gtk::Builder-ui-filer läses bäst in " "från resurser som lagras i själva programbinären. Detta eliminerar behovet " "av de flesta filer som traditionellt skulle installeras på en " "programspecifik plats i /usr/share." #. (itstool) path: chapter/para #: C/index-in.docbook:8169 msgid "An application consists of a number of files: <_:variablelist-1/>" msgstr "Ett program består av ett antal filer: <_:variablelist-1/>" #. (itstool) path: chapter/para #: C/index-in.docbook:8203 #, fuzzy msgid "" "gtkmm includes application support that is built " "on top of Gio::Application. In this chapter we'll " "build a simple application by starting from scratch, adding more and more " "pieces over time. Along the way, we'll learn about Gtk::" "Application, Gtk::Builder, resources, " "menus, settings, Gtk::HeaderBar, Gtk::" "Stack, Gtk::SearchBar, Gtk::" "ListBox, and more." msgstr "" "gtkmm inkluderar programstöd som byggts på " "Gio::Application. I detta kapitel kommer vi bygga ett " "enkelt program genom att starta från grunden och stegvis lägga till fler och " "fler bitar. På vägen kommer vi lära oss om Gtk::Application, Gtk::Builder, resurser, menyer, " "inställningar, Gtk::HeaderBar, Gtk::Stack, Gtk::SearchBar, Gtk::ListBox med mera." #. (itstool) path: chapter/para #: C/index-in.docbook:8212 #, fuzzy msgid "" "The full, buildable sources for these examples can be found in the " "examples/book/buildapp directory of the " "gtkmm-documentation source distribution, or " "online in the gtkmm-" "documentation git repository. You can build each " "example separately by using meson and ninja with the meson.build file or by using " "make with the Makefile.example file. " "For more information, see the README included in the " "buildapp directory." msgstr "" "De fullständiga byggbara källorna för dessa exempel kan hittas i katalogen " "examples/book/buildapp för källkodsdistributionen av " "gtkmm-documentation, eller på nätet i git-arkivet för gtkmm-documentation. Du kan bygga varje exempel separat genom att använda " "meson och ninja med filen " "meson.build eller genom att använda make med filen Makefile.example. För mer " "information kan du se README som finns i katalogen " "buildapp." #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8225 C/index-in.docbook:8269 msgid "A trivial application" msgstr "Ett simpelt program" #. (itstool) path: section/para #: C/index-in.docbook:8227 #, fuzzy msgid "" "When using Gtk::Application, the main() function can be very simple. We just call Gtk::" "Application::run() on an instance of our application class." msgstr "" "När Gtk::Application används kan main()-funktionen vara väldigt enkel. Vi anropar helt enkelt " "Gtk::Application::run() på en instans av vår " "programklass." #. (itstool) path: section/para #: C/index-in.docbook:8233 #, fuzzy msgid "" "All the application logic is in the application class, which is a subclass " "of Gtk::Application. Our example does not yet have " "any interesting functionality. All it does is open a window when it is " "activated without arguments, and open the files it is given, if it is " "started with arguments. (Or rather, our application class tries to open the " "files, but our subclassed application window does not yet do what it's told " "to do.)" msgstr "" "All programlogik är i programklassen, vilket är en underklass till " "Gtk::Application. Vårt exempel har ännu inte någon " "intressant funktionalitet. Allt det gör är att öppna ett fönster när det " "aktiveras utan argument, och öppna filerna som det ges om det startas med " "argument. (Eller snarare försöker vår programklass öppna filerna, men vårt " "underklassade programfönster gör inte ännu vad det ombes att göra.)" #. (itstool) path: section/para #: C/index-in.docbook:8242 #, fuzzy msgid "" "To handle these two cases, we override signal_activate()'s default handler, which gets called when the application is " "launched without commandline arguments, and signal_open()'s default handler, which gets called when the application is " "launched with commandline arguments." msgstr "" "För att hantera dessa två fall åsidosätter vi signal_activate():s standardhanterare, som anropas när programmet körs utan " "kommandoradsargument, och signal_open():s " "standardhanterare, som anropas när programmet körs med kommandoradsargument." #. (itstool) path: section/para #: C/index-in.docbook:8249 msgid "" "Gio::Application Reference" msgstr "" "Referens för Gio::Application" #. (itstool) path: section/para #: C/index-in.docbook:8250 msgid "" "Gtk::Application Reference" msgstr "" "Referens för Gtk::Application" #. (itstool) path: section/para #: C/index-in.docbook:8252 #, fuzzy msgid "" "Another important class that is part of the application support in " "gtkmm is Gtk::ApplicationWindow. It is typically subclassed as well. Our subclass does not do " "anything yet, so we will just get an empty window." msgstr "" "En annan viktig klass som är del av programstödet i gtkmm is Gtk::ApplicationWindow. Den " "underklassas vanligen också. Vår underklass gör inte något ännu, så vi får " "bara ett tomt fönster." #. (itstool) path: section/para #: C/index-in.docbook:8258 #, fuzzy msgid "" "As part of the initial setup of our application, we also create an icon and " "a desktop file. Note that @bindir@ in the desktop file needs to be replaced " "with the actual path to the binary before this desktop file can be used." msgstr "" "Som del av den initiala konfigurationen av ditt program skapar vi även en " "ikon och en desktop-fil. Observera att @bindir@ i desktop-filen behöver " "ersättas med den faktiska sökvägen till binären innan denna desktop-fil kan " "användas." #. (itstool) path: section/para #: C/index-in.docbook:8264 msgid "Here is what we've achieved so far:" msgstr "Här är vad vi har uppnått så här långt:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8271 #, fuzzy msgctxt "_" msgid "" "external ref='figures/buildapp_trivial_app.png' " "md5='fe94e3d80cb888d1827912f49af7a6f3'" msgstr "" "external ref='figures/buildapp_trivial_app.png' " "md5='fe94e3d80cb888d1827912f49af7a6f3'" #. (itstool) path: section/para #: C/index-in.docbook:8275 #, fuzzy msgid "" "This does not look very impressive yet, but our application is already " "presenting itself on the session bus, it has single-instance semantics, and " "it accepts files as commandline arguments." msgstr "" "Det här ser inte ut så imponerande än, men vårt program presenterar sig " "redan på sessionsbussen, har enkelinstanssemantik och accepterar filer som " "kommandoradsargument." #. (itstool) path: section/para #: C/index-in.docbook:8280 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8285 C/index-in.docbook:8328 #, fuzzy msgid "Populating the window" msgstr "Fylla fönstret" #. (itstool) path: section/para #: C/index-in.docbook:8287 #, fuzzy msgid "" "In this step, we use a Gtk::Builder instance to " "associate a Gtk::Builder ui file with our application " "window class." msgstr "" "I detta steg använder vi en Gtk::Builder-instans för " "att associera en Gtk::Builder-ui-fil med vår " "programfönsterklass." #. (itstool) path: section/para #: C/index-in.docbook:8292 #, fuzzy msgid "" "Our simple ui file gives the window a title, and puts a Gtk::" "Stack widget as the main content." msgstr "" "Vår enkla ui-fil ger fönstret en titel och sätter en Gtk::Stack-komponent som huvudinnehållet." #. (itstool) path: section/para #: C/index-in.docbook:8297 #, fuzzy msgid "" "To make use of this file in our application, we revisit our Gtk::" "ApplicationWindow subclass, and call Gtk::Builder::" "create_from_resource() and Gtk::Builder::" "get_widget_derived() from the ExampleAppWindow::" "create() method to get an instance of our subclassed " "Gtk::ApplicationWindow. See the Using derived widgets section for " "more information about get_widget_derived()." msgstr "" "För att använda denna fil i vårt program besöker vi åter vår underklass " "Gtk::ApplicationWindow, och anropar Gtk::" "Builder::create_from_resource() och Gtk::Builder::" "get_widget_derived() från metoden ExampleAppWindow::" "create() för att får en instans av vårt underklassade " "Gtk::ApplicationWindow. Se avsnittet Använda härledda komponenter för mer information om get_widget_derived()." #. (itstool) path: para/screen #: C/index-in.docbook:8316 #, fuzzy, no-wrap msgid "$ glib-compile-resources --target=resources.c --generate-source exampleapp.gresource.xml" msgstr "$ glib-compile-resources --target=resources.c --generate-source exampleapp.gresource.xml" #. (itstool) path: section/para #: C/index-in.docbook:8308 #, fuzzy msgid "" "You may have noticed that we use the _from_resource() variant of the method that reads the ui file. Now we need to use " "GLib's resource functionality to include the ui " "file in the binary. This is commonly done by listing all resources in a ." "gresource.xml file. This file has to be converted into a C source file that " "will be compiled and linked into the application together with the other " "source files. To do so, we use the glib-compile-resources utility: <_:screen-1/> The Gio::Resource and glib-compile-resources section contains " "more information about resource files. If you build with Meson, use the " "compile_resources() function in Meson's GNOME module." msgstr "" "Du kan ha upptäckt att vi använder varianten _from_resource() för metoden som läser ui-filen. Nu behöver vi använda " "GLibs resursfunktionalitet för att inkludera ui-" "filen i binären. Detta görs vanligen genom att lista alla resurser i en ." "gresource.xml-fil. Denna fil måste konverteras till en C-källfil som kommer " "kompileras och länkas till av programmet tillsammans med de andra " "källfilerna. För att göra det använder vi verktyget glib-" "compile-resources: <_:screen-1/> Avsnittet Gio::Resource och glib-compile-resources innehåller " "mer information om resursfiler. Om du bygger med Meson använder du " "funktionen compile_resources() i Mesons GNOME-modul." #. (itstool) path: section/para #: C/index-in.docbook:8323 msgid "Our application now looks like this:" msgstr "Vårt program ser nu ut så här:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8330 #, fuzzy msgctxt "_" msgid "" "external ref='figures/buildapp_populating_window.png' " "md5='4af45b6a60b3973334ac91eb3f1dcf91'" msgstr "" "external ref='figures/buildapp_populating_window.png' " "md5='4af45b6a60b3973334ac91eb3f1dcf91'" #. (itstool) path: section/para #: C/index-in.docbook:8334 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8339 C/index-in.docbook:8375 msgid "Opening files" msgstr "Öppna filer" #. (itstool) path: section/para #: C/index-in.docbook:8341 msgid "" "In this step, we make our application show the contents of all the files " "that it is given on the commandline." msgstr "" "I detta steg får vi vårt program att visa innehållet för alla filer som det " "fått på kommandoraden." #. (itstool) path: section/para #: C/index-in.docbook:8346 #, fuzzy msgid "" "To this end, we add a data member to our application window and keep a " "pointer to the Gtk::Stack there. We get the pointer " "with a call to Gtk::Builder::get_widget() in the " "application window's constructor." msgstr "" "För detta lägger vi till en datamedlem till vårt programfönster och behåller " "en pekare till vår Gtk::Stack där. Vi får pekaren med " "ett anrop till Gtk::Builder::get_widget() i " "programfönstrets konstruktor." #. (itstool) path: section/para #: C/index-in.docbook:8352 #, fuzzy msgid "" "Now we revisit the ExampleAppWindow::open_file_view() method that is called for each commandline argument, and " "construct a Gtk::TextView that we then add as a page " "to the stack." msgstr "" "Nu besöker vi åter metoden ExampleAppWindow::open_file_view() som anropas för varje kommandoradsargument, och konstruerar en " "Gtk::TextView som vi sedan lägger till som en sida i " "stacken." #. (itstool) path: section/para #: C/index-in.docbook:8358 #, fuzzy msgid "" "Lastly, we add a Gtk::StackSwitcher to the titlebar " "area in the ui file, and we tell it to display information about our stack." msgstr "" "Slutligen lägger vi till en Gtk::StackSwitcher till " "namnlistsområdet i ui-filen, och säger till den att visa information om vår " "stack." #. (itstool) path: section/para #: C/index-in.docbook:8363 #, fuzzy msgid "" "The stack switcher gets all its information it needs to display tabs from " "the stack that it belongs to. Here, we are passing the label to show for " "each file as the last argument to the Gtk::Stack::add() method." msgstr "" "Stackväxlaren får all information den behöver för att visa flika rån stacken " "som den hör till. Här skickar vi etiketten att visa för varje fil som det " "sista argumentet till Gtk::Stack::add()-metoden." #. (itstool) path: section/para #: C/index-in.docbook:8370 msgid "Our application is beginning to take shape:" msgstr "Vårt program börjar få form:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8377 #, fuzzy msgctxt "_" msgid "" "external ref='figures/buildapp_opening_files.png' " "md5='ad2373e10879d9724c91408aa6dbd4c3'" msgstr "" "external ref='figures/buildapp_opening_files.png' " "md5='ad2373e10879d9724c91408aa6dbd4c3'" #. (itstool) path: section/para #: C/index-in.docbook:8381 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8386 C/index-in.docbook:8421 msgid "A menu" msgstr "En meny" #. (itstool) path: section/para #: C/index-in.docbook:8388 msgid "" "The menu is shown at the right side of the headerbar. It is meant to collect " "infrequently used actions that affect the whole application." msgstr "" "Menyn visas på höger sida av rubrikraden. Den är tänkt att samla mer sällan " "använda åtgärder som påverkar hela programmet." #. (itstool) path: section/para #: C/index-in.docbook:8393 #, fuzzy msgid "" "Just like the application window, we specify our menu in a ui file, and add " "it as a resource to our binary." msgstr "" "Precis som programfönstret specificerar vi vår meny i en ui-fil, och lägger " "till den som en resurs till vår binär." #. (itstool) path: section/para #: C/index-in.docbook:8398 #, fuzzy msgid "" "To make the menu appear, we have to load the ui file and associate the " "resulting menu model with the menu button that we've added to the headerbar. " "Since menus work by activating Gio::Actions, we also " "have to add a suitable set of actions to our application." msgstr "" "För att få menyn att dyka upp måste vi läsa in ui-filen och associera den " "resulterande menymodellen med menyknappen som vi lagt till i rubrikraden. Då " "menyer fungerar genom att aktivera Gio::Action-" "åtgärder så måste vi också lägga till en lämplig uppsättning åtgärder till " "vårt program." #. (itstool) path: section/para #: C/index-in.docbook:8405 #, fuzzy msgid "" "Adding the actions is best done in the on_startup() " "default signal handler, which is guaranteed to be called once for each " "primary application instance." msgstr "" "Att lägga till åtgärderna görs bäst i standardsignalhanteraren " "on_startup(), vilken är garanterad att anropas en " "gång för varje primär programinstans." #. (itstool) path: section/para #: C/index-in.docbook:8410 #, fuzzy msgid "" "Our preferences menu item does not do anything yet, but the Quit menu item " "is fully functional. It can also be activated by the usual Ctrl-Q shortcut. " "The shortcut is added with Gtk::Application::" "set_accel_for_action()." msgstr "" "Vårt inställningsmenyobjekt gör inte något ännu, men Quit-menyobjektet " "fungerar. Det kan också aktiveras genom det vanliga kortkommandot Ctrl-Q. " "Kortkommandot läggs till med Gtk::Application::" "set_accel_for_action()." #. (itstool) path: section/para #: C/index-in.docbook:8416 msgid "The menu looks like this:" msgstr "Menyn ser ut så här:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8423 #, fuzzy msgctxt "_" msgid "" "external ref='figures/buildapp_menu.png' " "md5='a9d0d291ab0f472a7cd9c38c01130d8d'" msgstr "" "external ref='figures/buildapp_menu.png' " "md5='a9d0d291ab0f472a7cd9c38c01130d8d'" #. (itstool) path: section/para #: C/index-in.docbook:8427 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8432 C/index-in.docbook:8505 msgid "A preference dialog" msgstr "En inställningsdialog" #. (itstool) path: section/para #: C/index-in.docbook:8434 msgid "" "A typical application will have some preferences that should be remembered " "from one run to the next. Even for our simple example application, we may " "want to change the font that is used for the content." msgstr "" "Ett typiskt program kommer ha några inställningar som ska kommas ihåg från " "en körning till den andra. Även för vårt enkla exempelprogram kan vi vilja " "ändra typsnittet som används för innehållet." #. (itstool) path: section/para #: C/index-in.docbook:8440 #, fuzzy msgid "" "We are going to use Gio::Settings to store our " "preferences. Gio::Settings requires a schema that " "describes our settings, in our case the org.gtkmm.exampleapp." "gschema.xml file." msgstr "" "Vi kommer använda Gio::Settings för att lagra våra " "inställningar. Gio::Settings kräver ett schema som " "beskriver våra inställningar, i vårt fall filen org.gtkmm." "exampleapp.gschema.xml." #. (itstool) path: section/para #: C/index-in.docbook:8446 #, fuzzy msgid "" "Before we can make use of this schema in our application, we need to compile " "it into the binary form that Gio::Settings expects. " "GIO provides macros to do this in autotools-based projects. See the " "description of GSettings. Meson provides the compile_schemas() function in the GNOME module." msgstr "" "Innan vi kan använda detta schema i vårt program behöver vi kompilera det " "till den binärform som Gio::Settings förväntar sig. " "GIO tillhandahåller makron för att göra detta i autotools-baserade projekt. " "Se beskrivningen av GSettings. Meson tillhandahåller funktionen " "compile_schemas() i GNOME-modulen." #. (itstool) path: section/para #: C/index-in.docbook:8455 #, fuzzy msgid "" "Next, we need to connect our settings to the widgets that they are supposed " "to control. One convenient way to do this is to use Gio::" "Settings::bind() to bind settings keys to object properties, as " "we do for the transition setting in ExampleAppWindow's constructor." msgstr "" "Härnäst behöver vi ansluta våra inställningar till komponenterna som de " "förväntas styra. Ett praktiskt sätt att göra detta är att använda " "Gio::Settings::bind() för att binda " "inställningstangenter som vi gör för övergångsinställningen i " "ExampleAppWindows konstruktor." #. (itstool) path: section/programlisting #: C/index-in.docbook:8461 #, fuzzy, no-wrap msgid "" "\n" "m_settings = Gio::Settings::create(\"org.gtkmm.exampleapp\");\n" "m_settings->bind(\"transition\", m_stack->property_transition_type());\n" msgstr "" "\n" "m_settings = Gio::Settings::create(\"org.gtkmm.exampleapp\");\n" "m_settings->bind(\"transition\", m_stack->property_transition_type());\n" #. (itstool) path: section/para #: C/index-in.docbook:8466 #, fuzzy msgid "" "The code to connect the font setting is a little more involved, since it " "corresponds to an object property in a Gtk::TextTag " "that we must first create. The code is in ExampleAppWindow::" "open_file_view()." msgstr "" "Koden för att ansluta till typsnittsinställningen är lite mer avancerad då " "den motsvarar en objektegenskap i en Gtk::TextTag som " "vi först måste skapa. Koden finns i ExampleAppWindow::" "open_file_view()." #. (itstool) path: section/programlisting #: C/index-in.docbook:8471 #, fuzzy, no-wrap msgid "" "\n" "auto tag = buffer->create_tag();\n" "m_settings->bind(\"font\", tag->property_font());\n" "buffer->apply_tag(tag, buffer->begin(), buffer->end());\n" msgstr "" "\n" "auto tag = buffer->create_tag();\n" "m_settings->bind(\"font\", tag->property_font());\n" "buffer->apply_tag(tag, buffer->begin(), buffer->end());\n" #. (itstool) path: section/para #: C/index-in.docbook:8477 #, fuzzy msgid "" "At this point, the application will already react if you change one of the " "settings, e.g. using the gsettings commandline tool. Of " "course, we expect the application to provide a preference dialog for these. " "So lets do that now. Our preference dialog will be a subclass of " "Gtk::Window, and we'll use the same techniques that " "we've already seen in ExampleAppWindow: a " "Gtk::Builder ui file and settings bindings. In this " "case the bindings are more involved, though. We use Gtk::" "FontDialogButton and Gtk::DropDown in the " "preference dialog. The types of the properties in these classes can't be " "automatically converted to the string type that Gio::Settings requires." msgstr "" "Vi denna punkt kommer programmet redan reagera om du ändrar en av " "inställningarna, exempelvis genom att använda kommandoradsverktyget " "gsettings. Vi förväntar oss förstås att programmet " "tillhandahåller en inställningsdialog för dessa. Så låt oss göra så nu. Vår " "inställningsdialog kommer vara en underklass av Gtk::Dialog, och vi kommer använda samma tekniker som vi redan sett i " "ExampleAppWindow: en Gtk::Builder-ui-fil och inställningsbindningar." #. (itstool) path: section/para #: C/index-in.docbook:8490 #, fuzzy msgid "" "When we've created the prefs.ui file and the " "ExampleAppPrefs class, we revisit the " "ExampleApplication::on_action_preferences() method " "in our application class, and make it open a new preference dialog." msgstr "" "När vi skapat filen prefs.ui och klassen " "ExampleAppPrefs besöker vi åter metoden " "ExampleApplication::on_action_preferences() i vår " "programklass, och får den öppna en ny inställningsdialog." #. (itstool) path: section/programlisting #: C/index-in.docbook:8495 #, no-wrap msgid "" "\n" "auto prefs_dialog = ExampleAppPrefs::create(*get_active_window());\n" "prefs_dialog->present();\n" msgstr "" "\n" "auto prefs_dialog = ExampleAppPrefs::create(*get_active_window());\n" "prefs_dialog->present();\n" #. (itstool) path: section/para #: C/index-in.docbook:8500 msgid "" "After all this work, our application can now show a preference dialog like " "this:" msgstr "" "Efter allt detta arbete kan vårt program nu visa en sådan här " "inställningsdialog:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8507 #, fuzzy msgctxt "_" msgid "" "external ref='figures/buildapp_pref_dialog.png' " "md5='ecc7fa5d31086c536a5ad279eddfbf23'" msgstr "" "external ref='figures/buildapp_pref_dialog.png' " "md5='ecc7fa5d31086c536a5ad279eddfbf23'" #. (itstool) path: section/para #: C/index-in.docbook:8511 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8516 C/index-in.docbook:8559 msgid "Adding a search bar" msgstr "Lägga till en sökrad" #. (itstool) path: section/para #: C/index-in.docbook:8518 #, fuzzy msgid "" "We continue to flesh out the functionality of our application. For now, we " "add search. gtkmm supports this with " "Gtk::SearchEntry and Gtk::SearchBar. The search bar is a widget that can slide in from the top to " "present a search entry." msgstr "" "Vi fortsätter fylla ut vårt programs funktionalitet. Nu lägger vi till " "sökning. gtkmm stöder detta med Gtk::" "SearchEntry och Gtk::SearchBar. Sökraden " "är en komponent som kan glida ner från toppen för att visa ett sökfält." #. (itstool) path: section/para #: C/index-in.docbook:8524 #, fuzzy msgid "" "We add a toggle button to the header bar, which can be used to slide out the " "search bar below the header bar. The new widgets are added in the " "window.ui file." msgstr "" "Vi lägger till en växlingsknapp till rubrikraden, som kan användas för att " "glida ut sökraden nedanför rubrikraden. De nya komponenterna läggs till i " "filen window.ui." #. (itstool) path: section/para #: C/index-in.docbook:8529 #, fuzzy msgid "" "Implementing the search needs quite a few code changes that we are not going " "to completely go over here. The central piece of the search implementation " "is a signal handler that listens for text changes in the search entry, shown " "here without error handling." msgstr "" "Att implementera sökningen kräver ganska många kodändringar som vi inte " "fullständigt kommer beskriva här. Den centrala delen av sökimplementationen " "är en signalhanterare som lyssnar på textändringar i sökfältet, visat här " "utan felhantering." #. (itstool) path: section/programlisting #: C/index-in.docbook:8534 #, no-wrap msgid "" "\n" "void ExampleAppWindow::on_search_text_changed()\n" "{\n" " const auto text = m_searchentry->get_text();\n" " auto tab = dynamic_cast<Gtk::ScrolledWindow*>(m_stack->get_visible_child());\n" " auto view = dynamic_cast<Gtk::TextView*>(tab->get_child());\n" "\n" " // Very simple-minded search implementation.\n" " auto buffer = view->get_buffer();\n" " Gtk::TextIter match_start;\n" " Gtk::TextIter match_end;\n" " if (buffer->begin().forward_search(text, Gtk::TextSearchFlags::CASE_INSENSITIVE,\n" " match_start, match_end))\n" " {\n" " buffer->select_range(match_start, match_end);\n" " view->scroll_to(match_start);\n" " }\n" "}\n" msgstr "" "\n" "void ExampleAppWindow::on_search_text_changed()\n" "{\n" " const auto text = m_searchentry->get_text();\n" " auto tab = dynamic_cast<Gtk::ScrolledWindow*>(m_stack->get_visible_child());\n" " auto view = dynamic_cast<Gtk::TextView*>(tab->get_child());\n" "\n" " // Väldigt enkel sökimplementation.\n" " auto buffer = view->get_buffer();\n" " Gtk::TextIter match_start;\n" " Gtk::TextIter match_end;\n" " if (buffer->begin().forward_search(text, Gtk::TextSearchFlags::CASE_INSENSITIVE,\n" " match_start, match_end))\n" " {\n" " buffer->select_range(match_start, match_end);\n" " view->scroll_to(match_start);\n" " }\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:8554 msgid "With the search bar, our application now looks like this:" msgstr "Med sökraden ser vårt program nu ut så här:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8561 #, fuzzy msgctxt "_" msgid "" "external ref='figures/buildapp_search_bar.png' " "md5='ca0d7fdb0f37cbd592f2c55904bb6f3f'" msgstr "" "external ref='figures/buildapp_search_bar.png' " "md5='ca0d7fdb0f37cbd592f2c55904bb6f3f'" #. (itstool) path: section/para #: C/index-in.docbook:8565 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8570 C/index-in.docbook:8605 msgid "Adding a side bar" msgstr "Lägga till en sidopanel" #. (itstool) path: section/para #: C/index-in.docbook:8572 #, fuzzy msgid "" "As another piece of functionality, we are adding a sidebar, which " "demonstrates Gtk::Revealer and Gtk::" "ListBox. The new widgets are added in the window.ui file." msgstr "" "Som en annan funktionalitetsdel lägger vi till en sidopanel som demonstrerar " "Gtk::Revealer och Gtk::ListBox. De nya komponenterna läggs till i filen window.ui." #. (itstool) path: section/para #: C/index-in.docbook:8578 #, fuzzy msgid "" "The code to populate the sidebar with buttons for the words found in each " "file is a little too involved to go into here. But we'll look at the code to " "add a checkbutton for the new feature to the menu. A menu item is added to " "the ui file gears_menu.ui." msgstr "" "Koden för att fylla sidopanelen med knappar för orden som hittas i varje fil " "är lite för avancerad för att gå in på här. Men vi kommer titta på koden för " "att lägga till en kryssruta för den nya funktionen i menyn. Ett menyobjetk " "läggs till i ui-filen gears_menu.ui." #. (itstool) path: section/para #: C/index-in.docbook:8585 #, fuzzy msgid "" "To connect the menu item to the new show-words setting, " "we use a Gio::Action corresponding to the given " "Gio::Settings key. In ExampleAppWindow's constructor:" msgstr "" "För att ansluta menyobjektet till den nya inställningen show-words använder vi en Gio::Action som motsvarar den " "angivna Gio::Settings-nyckeln. I " "ExampleAppWindows konstruktor:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8590 #, fuzzy, no-wrap msgid "" "\n" "// Connect the menu to the MenuButton m_gears, and bind the show-words setting\n" "// to the win.show-words action and the \"Words\" menu item.\n" "// (The connection between action and menu item is specified in gears_menu.ui.)\n" "auto menu_builder = Gtk::Builder::create_from_resource(\"/org/gtkmm/exampleapp/gears_menu.ui\");\n" "auto menu = menu_builder->get_object<Gio::MenuModel>(\"menu\");\n" "m_gears->set_menu_model(menu);\n" "add_action(m_settings->create_action(\"show-words\"));\n" msgstr "" "\n" "// Anslut menyn till MenuButton-knappen m_gears, och bind inställningen show-words\n" "// till åtgärden win.show-words och menyobjektet ”Words”.\n" "// (Anslutningen mellan åtgärd och menyobjekt anges i gears_menu.ui.)\n" "auto menu_builder = Gtk::Builder::create_from_resource(\"/org/gtkmm/exampleapp/gears_menu.ui\");\n" "auto menu = menu_builder->get_object<Gio::MenuModel>(\"menu\");\n" "m_gears->set_menu_model(menu);\n" "add_action(m_settings->create_action(\"show-words\"));\n" #. (itstool) path: section/para #: C/index-in.docbook:8600 msgid "What our application looks like now:" msgstr "Hur vårt program ser ut nu:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8607 #, fuzzy msgctxt "_" msgid "" "external ref='figures/buildapp_side_bar.png' " "md5='e13a4b6ebbcf73692dc59a0ba08e59e7'" msgstr "" "external ref='figures/buildapp_side_bar.png' " "md5='e13a4b6ebbcf73692dc59a0ba08e59e7'" #. (itstool) path: section/para #: C/index-in.docbook:8611 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8616 C/index-in.docbook:8658 msgid "Properties" msgstr "Egenskaper" #. (itstool) path: section/para #: C/index-in.docbook:8618 #, fuzzy msgid "" "Widgets and other objects have many useful properties. Here we show some " "ways to use them in new and flexible ways, by wrapping them in actions with " "Gio::PropertyAction or by binding them with " "Glib::Binding." msgstr "" "Komponenter och andra objekt har många användbara egenskaper. Här visar vi " "några sätt att använda dem på nya och flexibla sätt genom att omsluta dem i " "åtgärder med Gio::PropertyAction eller genom att " "binda dem med Glib::Binding." #. (itstool) path: section/para #: C/index-in.docbook:8624 #, fuzzy msgid "" "To set this up, we add two labels to the header bar in our window." "ui file, named lines_label and lines, and get pointers to them in the application window's constructor, " "as we've seen a couple of times by now. We add a new \"Lines\" menu item to " "the gears menu, which triggers the show-lines action." msgstr "" "För att konfigurera detta lägger vi till två etiketter till rubrikraden i " "vår window.ui-fil, med namnen lines_label och lines, och får pekare till dem i " "programfönstrets konstruktor, som vi sett några gånger nu. Vi lägger till " "ett nytt menyobjekt ”Lines” vilket utlöser åtgärden show-lines till kugghjulsmenyn." #. (itstool) path: section/para #: C/index-in.docbook:8632 #, fuzzy msgid "" "To make this menu item do something, we create a property action for the " "visible property of the lines label, " "and add it to the actions of the window. The effect of this is that the " "visibility of the label gets toggled every time the action is activated. " "Since we want both labels to appear and disappear together, we bind the " "visible property of the lines_label " "widget to the same property of the lines widget. In " "ExampleAppWindow's constructor:" msgstr "" "För att få detta menyobjekt att göra något skapar vi en egenskapsåtgärd för " "egenskapen visible för etiketten lines, och lägger till den till fönstrets åtgärder. Effekten av detta är " "avv synligheten för etiketten växlas varje gång åtgärden aktiveras. Då vi " "vill att båda etiketterna ska visas och försvinna samtidigt binder vi " "egenskapen visible för komponenten lines_label till samma egenskap för komponenten lines. I " "ExampleAppWindows konstruktor:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8642 #, no-wrap msgid "" "add_action(Gio::PropertyAction::create(\"show-lines\", m_lines->property_visible()));\n" "m_binding_lines_visible = Glib::Binding::bind_property(m_lines->property_visible(),\n" " m_lines_label->property_visible());\n" "\n" msgstr "" "add_action(Gio::PropertyAction::create(\"show-lines\", m_lines->property_visible()));\n" "m_binding_lines_visible = Glib::Binding::bind_property(m_lines->property_visible(),\n" " m_lines_label->property_visible());\n" "\n" #. (itstool) path: section/para #: C/index-in.docbook:8648 #, fuzzy msgid "" "We also need a function that counts the lines of the currently active tab, " "and updates the lines label. See the full source if you " "are interested in the details." msgstr "" "Vi behöver också en funktion som räknar raderna för den för närvarande " "aktiva fliken och uppdaterar etiketten lines. Se den " "fullständiga källkoden om du är intresserad av detaljerna." #. (itstool) path: section/para #: C/index-in.docbook:8653 msgid "This brings our example application to this appearance:" msgstr "Detta får vårt exempelprogram att se ut så här:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8660 #, fuzzy msgctxt "_" msgid "" "external ref='figures/buildapp_properties.png' " "md5='46c52e09cc1b4ddbc095e12f763a4427'" msgstr "" "external ref='figures/buildapp_properties.png' " "md5='46c52e09cc1b4ddbc095e12f763a4427'" #. (itstool) path: section/para #: C/index-in.docbook:8664 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: section/title #. (itstool) path: figure/title #: C/index-in.docbook:8669 C/index-in.docbook:8695 msgid "Header bar" msgstr "Rubrikrad" #. (itstool) path: section/para #: C/index-in.docbook:8671 #, fuzzy msgid "" "Our application already uses a Gtk::HeaderBar instead " "of a 'normal' window titlebar. The header bar is a direct child of the " "window, and its type is titlebar. This is set in the " "window.ui file." msgstr "" "Vårt program använder redan en Gtk::HeaderBar i " "stället för en ”vanlig” fönsternamnlist. Rubrikraden är en direkt " "underordnad till fönstret, och dess typ är titlebar. " "Detta ställs in i filen window.ui." #. (itstool) path: section/para #: C/index-in.docbook:8678 #, fuzzy msgid "" "Here we'll just make two small changes to the header bar. The " "decoration-layout property is set in the window." "ui file, to show only the close button, and hide the minimize and " "maximize buttons. We also include an icon in the resource file, and set up " "this icon as the window icon. In ExampleAppWindow's " "constructor:" msgstr "" "Här gör vi bara två små ändringar till rubrikraden. Egenskapen " "decoration-layout ställs in i window.ui-filen så den endast visar stängningsknappen, och döljer knapparna " "för minimering och maximering. Vi inkluderar också en ikon i resursfilen, " "och konfigurerar denna ikon som fönsterikonen. I " "ExampleAppWindows konstruktor:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8685 #, fuzzy, no-wrap msgid "" "Gtk::IconTheme::get_for_display(get_display())->add_resource_path(\"/org/gtkmm/exampleapp\");\n" "set_icon_name(\"exampleapp\");\n" "\n" msgstr "" "Gtk::IconTheme::get_for_display(get_display())->add_resource_path(\"/org/gtkmm/exampleapp\");\n" "set_icon_name(\"exampleapp\");\n" "\n" #. (itstool) path: section/para #: C/index-in.docbook:8690 msgid "Here is how the application now looks:" msgstr "Här är hur programmet ser ut nu:" #. (itstool) path: imageobject/imagedata #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/index-in.docbook:8697 #, fuzzy msgctxt "_" msgid "" "external ref='figures/buildapp_header_bar.png' " "md5='b2ab5d871b0deff13f04aac71700b1a0'" msgstr "" "external ref='figures/buildapp_header_bar.png' " "md5='b2ab5d871b0deff13f04aac71700b1a0'" #. (itstool) path: section/para #: C/index-in.docbook:8701 #, fuzzy msgid "" "The window.ui file sets a header bar title, but this " "title is not shown. That's because the stack switcher is a child of type " "title. The stack switcher becomes a custom title that " "hides the title label." msgstr "" "window.ui-filen ställer in en rubriksradstitel, men " "denna titel visas inte. Dett är för att stackväxlaren är en underordnad av " "typen title. Stackväxlaren blir en anpassad titel som " "döljer titeletiketten." #. (itstool) path: section/para #: C/index-in.docbook:8707 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: chapter/title #: C/index-in.docbook:8714 msgid "Contributing" msgstr "Bidra" #. (itstool) path: chapter/para #: C/index-in.docbook:8716 #, fuzzy msgid "" "This document, like so much other great software out there, was created for " "free by volunteers. If you are at all knowledgeable about any aspect of " "gtkmm that does not already have documentation, " "please consider contributing to this document." msgstr "" "Detta dokument, som så mycket annan fantastisk programvara, skapades gratis " "av frivilliga. Om du är det minsta insatt i någon aspekt av " "gtkmm som inte redan har dokumentation kan du " "gärna bidra till detta dokument." #. (itstool) path: chapter/para #: C/index-in.docbook:8722 #, fuzzy msgid "" "Ideally, we would like you to provide a merge request " "to the docs/tutorial/C/index-in.docbook file. This file " "is in the gtkmm-documentation module in GNOME git." msgstr "" "Idealiskt skulle vi vilja att du tillhandahåller en merge-" "förfrågan till filen docs/tutorial/C/index-in.docbook. Denna fil finns i modulen gtkmm-documentation " "i GNOME git." #. (itstool) path: chapter/para #: C/index-in.docbook:8728 #, fuzzy msgid "" "If you do decide to contribute, please post your contribution as an issue or " "merge request to GitLab. You can also discuss your ideas on GNOME's " "Discourse instance, " "under the Platform/Language bindings category with a " "cplusplus tag. Also, be aware that the entirety of this " "document is free, and any addition you provide must also be free. That is, " "people must be able to use any portion of your examples in their programs, " "and copies of this document (including your contribution) may be distributed " "freely." msgstr "" "Om du bestämmer dig för att bidra kan du skicka ditt bidrag till sändlistan " "för gtkmm<gtkmm-list@gnome.org> eller som ett ärende " "eller en merge-förfrågan till GitLab. Var också medveten om att hela " "detta dokument är fritt, och alla tillägg du gör också måste vara fria. Det " "vill säga att personer måste kunna använda alla delar av dina exempel i sina " "program, och kopior av detta dokument (med ditt bidrag) måste kunna spridas " "fritt." #. (itstool) path: appendix/title #: C/index-in.docbook:8743 msgid "The RefPtr smartpointer" msgstr "RefPtr-smartpekaren" #. (itstool) path: appendix/para #: C/index-in.docbook:8745 #, fuzzy msgid "" "Glib::RefPtr is a smartpointer. Specifically, it is a " "reference-counting smartpointer. You might be familiar with std::" "unique_ptr<> and std::shared_ptr<>, which are also smartpointers. In gtkmm-4.0 Glib::RefPtr<> is an alias for " "std::shared_ptr<>, which is reference-counting. " "Glib::RefPtr<> was introduced long before there " "was a reference-counting smartpointer in the C++ Standard Library." msgstr "" "Glib::RefPtr är en smartpekare. Mer specifikt är det " "en referensräknande smartpekare. Du kanske är bekant med std::" "unique_ptr<> och std::shared_ptr<> vilka också är smartpekare. I gtkmm-4.0 är Glib::RefPtr<> ett alias " "för std::shared_ptr<> som är referensräknande. " "Glib::RefPtr<> introducerades långt innan det " "fanns en referensräknande smartpekare i C++-standardbiblioteket." #. (itstool) path: appendix/para #: C/index-in.docbook:8756 #, fuzzy msgid "" "If you make your own Glib::ObjectBase-derived classes " "with create() methods that return a " "Glib::RefPtr, you must use Glib::" "make_refptr_for_instance() in your create() methods. This function creates a std::shared_ptr with a special deleter, which handles the reference-count for the " "wrapped C object." msgstr "" "Om du gör dina egna Glib::ObjectBase-härledda klasser " "med create()-metoder som returnerar en " "Glib::RefPtr måste du använda Glib::" "make_refptr_for_instance() i dina create()-metoder. Denna funktion skapar en std::shared_ptr med en speciell borttagare som hanterar referensräkningen för det " "omslutna C-objektet." #. (itstool) path: appendix/para #: C/index-in.docbook:8764 msgid "" "Reference" msgstr "" "Referens" #. (itstool) path: appendix/para #: C/index-in.docbook:8766 msgid "" "A smartpointer acts much like a normal pointer. Here are a few examples." msgstr "" "En smartpekare agerar i stort sett som en vanlig pekare. Här är några " "exempel." #. (itstool) path: section/title #: C/index-in.docbook:8769 msgid "Copying" msgstr "Kopiering" #. (itstool) path: section/para #: C/index-in.docbook:8770 #, fuzzy msgid "" "You can copy RefPtrs, just like normal pointers. But " "unlike normal pointers, you don't need to worry about deleting the " "underlying instance." msgstr "" "Du kan kopiera RefPtr-pekare, precis som vanliga " "pekare. Men till skillnad från vanliga pekare behöver du inte oroa dig om " "att ta bort den underliggande instansen." #. (itstool) path: section/programlisting #: C/index-in.docbook:8775 #, fuzzy, no-wrap msgid "" "\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n" "auto refPixbuf2 = refPixbuf;\n" msgstr "" "\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filnamn);\n" "auto refPixbuf2 = refPixbuf;\n" #. (itstool) path: section/para #: C/index-in.docbook:8779 #, fuzzy msgid "" "Of course this means that you can store RefPtrs in " "standard containers, such as std::vector or " "std::list." msgstr "" "Detta betyder förstås att du kan lagra RefPtr-pekare " "i standardbehållare, som std::vector eller " "std::list." #. (itstool) path: section/programlisting #: C/index-in.docbook:8783 #, fuzzy, no-wrap msgid "" "\n" "std::list<Glib::RefPtr<Gdk::Pixbuf>> listPixbufs;\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n" "listPixbufs.push_back(refPixbuf);\n" msgstr "" "\n" "std::list<Glib::RefPtr<Gdk::Pixbuf>> listPixbufs;\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filnamn);\n" "listPixbufs.push_back(refPixbuf);\n" #. (itstool) path: section/title #: C/index-in.docbook:8791 #, fuzzy msgid "Dereferencing" msgstr "Dereferering" #. (itstool) path: section/para #: C/index-in.docbook:8792 #, fuzzy msgid "" "You can dereference a smartpointer with the -> operator, to call the " "methods of the underlying instance, just like a normal pointer." msgstr "" "Du kan dereferera en smartpekare med operatorn -> för att anropa " "metoderna för den underliggande instansen, precis som en vanlig pekare." #. (itstool) path: section/programlisting #: C/index-in.docbook:8795 #, no-wrap msgid "" "\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n" "auto width = refPixbuf->get_width();\n" msgstr "" "\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filnamn);\n" "auto width = refPixbuf->get_width();\n" #. (itstool) path: section/para #: C/index-in.docbook:8799 #, fuzzy msgid "" "You can also use the * operator and the get() " "method to access the underlying instance, but it's usually a bad idea to do " "so. Unless you are careful, you can end up with a pointer or a reference " "which is not included in the reference count." msgstr "" "Du kan också använda *-operatorn och get()-metoden " "för att komma åt den underliggande instansen, men det är vanligen en dålig " "idé att göra det. Om du inte är försiktig kan du råka ut för en pekare eller " "referens som inte inkluderas i referensantalet." #. (itstool) path: section/programlisting #: C/index-in.docbook:8804 #, fuzzy, no-wrap msgid "" "\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n" "auto& underlying = *refPixbuf; // Possible, but not recommended\n" msgstr "" "\n" "auto refPixbuf = Gdk::Pixbuf::create_from_file(filnamn);\n" "auto& underlying = *refPixbuf; // Möjligt, men rekommenderas inte\n" #. (itstool) path: section/title #: C/index-in.docbook:8811 msgid "Casting" msgstr "Typkonvertering" #. (itstool) path: section/para #: C/index-in.docbook:8812 msgid "" "You can cast RefPtrs to base types, just like normal " "pointers." msgstr "" "Du kan typkonvertera RefPtr-pekare till bastyper, " "precis som vanliga pekare." #. (itstool) path: section/programlisting #: C/index-in.docbook:8816 #, fuzzy, no-wrap msgid "" "\n" "auto refStore = Gtk::TreeStore::create(columns);\n" "Glib::RefPtr<Gtk::TreeModel> refModel = refStore;\n" msgstr "" "\n" "auto refStore = Gtk::TreeStore::create(columns);\n" "Glib::RefPtr<Gtk::TreeModel> refModel = refStore;\n" #. (itstool) path: section/para #: C/index-in.docbook:8820 #, fuzzy msgid "" "This means that any method which takes a const Glib::RefPtr<" "BaseType>& argument can also take a const Glib::" "RefPtr<DerivedType>&. The cast is implicit, just as it " "would be for a normal pointer." msgstr "" "Detta betyder att alla metoder som tar ett const Glib::RefPtr<" "BaseType>&-argument också kan ta en const Glib::" "RefPtr<DerivedType>&. Typkonverteringen är implicit, precis " "som den skulle vara för en vanlig pekare." #. (itstool) path: section/para #: C/index-in.docbook:8824 msgid "" "You can also cast to a derived type, but the syntax is a little different " "than with a normal pointer." msgstr "" "Du kan också typkonvertera till en härledd typ, men syntaxen är lite annars " "än med en vanlig pekare." #. (itstool) path: section/programlisting #: C/index-in.docbook:8827 #, no-wrap msgid "" "\n" "auto refStore = std::dynamic_pointer_cast<Gtk::TreeStore>(refModel);\n" "auto refStore2 = std::static_pointer_cast<Gtk::TreeStore>(refModel);\n" msgstr "" "\n" "auto refStore = std::dynamic_pointer_cast<Gtk::TreeStore>(refModel);\n" "auto refStore2 = std::static_pointer_cast<Gtk::TreeStore>(refModel);\n" #. (itstool) path: section/title #: C/index-in.docbook:8834 #, fuzzy msgid "Checking for nullptr" msgstr "Kontrollera nullptr" #. (itstool) path: section/para #: C/index-in.docbook:8835 #, fuzzy msgid "" "Just like normal pointers, you can check whether a RefPtr points to anything." msgstr "" "Precis som vanliga pekare kan du kontrollera om en RefPtr pekar på något." #. (itstool) path: section/programlisting #: C/index-in.docbook:8839 #, fuzzy, no-wrap msgid "" "\n" "auto refModel = m_TreeView.get_model();\n" "if (refModel)\n" "{\n" " auto cols_count = refModel->get_n_columns();\n" " ...\n" "}\n" msgstr "" "\n" "auto refModel = m_TreeView.get_model();\n" "if (refModel)\n" "{\n" " auto cols_count = refModel->get_n_columns();\n" " ...\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:8847 msgid "" "But unlike normal pointers, RefPtrs are automatically " "initialized to nullptr so you don't need to remember to " "do that yourself." msgstr "" "Men till skillnad från vanliga pekare så initieras RefPtr-pekare automatiskt till nullptr, så du behöver " "inte komma ihåg att göra det själv." #. (itstool) path: section/title #: C/index-in.docbook:8854 #, fuzzy msgid "Constness" msgstr "Const-het" # TODO: realize #. (itstool) path: section/para #: C/index-in.docbook:8855 #, fuzzy msgid "" "The use of the const keyword in C++ is not always clear. " "You might not realize that const Something* declares a pointer " "to a const Something. The pointer can be changed, but not the " "Something that it points to." msgstr "" "Användningen av nyckelordet const i C++ är inte alltid " "tydlig. Du kanske inte inser att const Something* deklarerar en " "pekare till ett const Something. Pekaren kan ändras, men inte " "Something som den pekar på." #. (itstool) path: section/para #: C/index-in.docbook:8861 #, fuzzy msgid "" "Therefore, the RefPtr equivalent of Something* for a method parameter is const Glib::RefPtr<Something>" "&, and the equivalent of const Something* is " "const Glib::RefPtr<const Something>&." msgstr "" "Därför är RefPtr-motsvarigheten till " "Something* för en metodparameter const Glib::RefPtr<" "Something>&, och motsvarigheten för const Something* är const Glib::RefPtr<const Something>&." #. (itstool) path: section/para #: C/index-in.docbook:8868 #, fuzzy msgid "" "The const ... & around both is just for efficiency, " "like using const std::string& instead of " "std::string for a method parameter to avoid " "unnecessary copying." msgstr "" "const ... & runt båda är bara för effektivitet, som " "att använda const std::string& i stället för " "std::string för en metodparameter för att undvika " "onödig kopiering." #. (itstool) path: section/title #: C/index-in.docbook:8882 msgid "Connecting signal handlers" msgstr "Ansluta signalhanterare" #. (itstool) path: section/para #: C/index-in.docbook:8884 #, fuzzy msgid "" "gtkmm widget classes have signal accessor " "methods, such as Gtk::Button::signal_clicked(), " "which allow you to connect your signal handler. Thanks to the flexibility of " "libsigc++, the callback library used by " "gtkmm, the signal handler can be almost any kind " "of function, but you will probably want to use a class method. Among " "GTK C coders, these signal handlers are often " "named callbacks." msgstr "" "gtkmm-komponentklasser har åtkomstmetoder för " "signaler, som Gtk::Button::signal_clicked(), vilken " "låter dig ansluta din signalhanterare. Tack vare flexibiliteten hos " "libsigc++, återanropsbiblioteket som används av " "gtkmm, så kan signalhanteraren vara nästan vilken " "sorts funktion som helst, men du kommer troligen vilja använda en " "klassmetod. Bland GTK:s C-kodare kallas dessa " "signalhanterare ofta återanrop." #. (itstool) path: section/para #: C/index-in.docbook:8894 msgid "Here's an example of a signal handler being connected to a signal:" msgstr "Här är ett exempel på en signalhanterare som ansluts till en signal:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8898 #, fuzzy, no-wrap msgid "" "\n" "#include <gtkmm/button.h>\n" "\n" "void on_button_clicked()\n" "{\n" " std::cout << \"Hello World\" << std::endl;\n" "}\n" "\n" "class some_class\n" "{\n" "public:\n" " some_class\n" " {\n" " button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));\n" " }\n" "private:\n" " Gtk::Button button {\"Hello World\"};\n" "};\n" msgstr "" "\n" "#include <gtkmm/button.h>\n" "\n" "void on_button_clicked()\n" "{\n" " std::cout << \"Hej världen\" << std::endl;\n" "}\n" "\n" "class some_class\n" "{\n" "public:\n" " some_class\n" " {\n" " button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));\n" " }\n" "private:\n" " Gtk::Button button {\"Hej världen\"};\n" "};\n" #. (itstool) path: section/para #: C/index-in.docbook:8918 #, fuzzy msgid "" "There's rather a lot to think about in this (non-functional) code. First " "let's identify the parties involved:" msgstr "" "Det finns ganska mycket att fundera på i denna (ej fungerande) kod. Låt oss " "först identifiera de involverade parterna:" #. (itstool) path: listitem/para #: C/index-in.docbook:8926 msgid "The signal handler is on_button_clicked()." msgstr "Signalhanteraren är on_button_clicked()." #. (itstool) path: listitem/para #: C/index-in.docbook:8932 #, fuzzy msgid "" "We're hooking it up to the Gtk::Button object called " "button." msgstr "" "Vi kopplar ihop den med Gtk::Button-objektet kallat " "button." #. (itstool) path: listitem/para #: C/index-in.docbook:8939 msgid "" "When the Button emits its clicked signal, " "on_button_clicked() will be called." msgstr "" "När denna Button sänder ut sin clicked-signal kommer " "on_button_clicked() att anropas." #. (itstool) path: section/para #: C/index-in.docbook:8947 msgid "Now let's look at the connection again:" msgstr "Låt oss titta på anslutningen igen:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8951 #, fuzzy, no-wrap msgid "" "\n" " ...\n" " button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));\n" " ...\n" msgstr "" "\n" " ...\n" " button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));\n" " ...\n" #. (itstool) path: section/para #: C/index-in.docbook:8957 #, fuzzy msgid "" "Note that we don't pass a pointer to on_button_clicked() directly to the signal's connect() " "method. Instead, we call sigc::ptr_fun(), and pass the " "result to connect()." msgstr "" "Observera att vi inte skickar en pekare till " "on_button_clicked() direkt till signalens " "connect()-metod. I stället anropar vi " "sigc::ptr_fun() och skickar resultatet till " "connect()." #. (itstool) path: section/para #: C/index-in.docbook:8964 #, fuzzy msgid "" "sigc::ptr_fun() generates a sigc::slot. A slot is an object which looks and feels like a function, but " "is actually an object. These are also known as function objects, or " "functors. sigc::ptr_fun() generates a slot for a " "standalone function or static method. sigc::mem_fun() " "generates a slot for a member method of a particular instance." msgstr "" "sigc::ptr_fun() genererar en sigc::slot. Ett fack är ett objekt som ser ut och känns som en funktion, men " "faktiskt är ett objekt. Dessa är också kända som funktionsobjekt, eller " "funktorer. sigc::ptr_fun() genererar ett fack för en " "fristående funktion eller statisk metod. sigc::mem_fun() genererar ett fack för en medlemsmetod för en specifik instans." #. (itstool) path: section/para #: C/index-in.docbook:8973 #, fuzzy msgid "" "A C++ lambda expression is a functor which can be implicitly converted to a " "sigc::slot in the call to connect(). A lambda expression can be used instead of sigc::" "ptr_fun(). It's also possible to use a lambda expression instead " "of sigc::mem_fun(), but then you won't get automatic " "disconnection of the signal handler when a sigc::trackable-derived object goes out of scope." msgstr "" "Ett C++-lambdauttryck är en funktor som kan implicit konverteras till en " "sigc::slot i anropet till connect(). Ett lambdauttryck kan användas i stället för sigc::" "ptr_fun(). Det är också möjligt att använda ett lambdauttryck i " "stället för sigc::mem_fun(), men då kommer du inte få " "automatisk frånkoppling av signalhanteraren då ett sigc::" "trackable-härlett objekt lämnar sin räckvidd." #. (itstool) path: section/para #: C/index-in.docbook:8982 #, fuzzy msgid "Here's a slightly larger example of slots in action:" msgstr "Här är ett lite större exempel på användning av fack:" #. (itstool) path: section/programlisting #: C/index-in.docbook:8986 #, fuzzy, no-wrap msgid "" "\n" "#include <gtkmm/button.h>\n" "\n" "void on_button_clicked()\n" "{\n" " std::cout << \"Hello World\" << std::endl;\n" "}\n" "\n" "class some_class\n" "{\n" "public:\n" " some_class\n" " {\n" " button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));\n" " button.signal_clicked().connect(sigc::mem_fun(*this, &some_class::on_button_clicked));\n" " }\n" " void on_button_clicked();\n" "private:\n" " Gtk::Button button {\"Hello World\"};\n" "};\n" msgstr "" "\n" "#include <gtkmm/button.h>\n" "\n" "void on_button_clicked()\n" "{\n" " std::cout << \"Hej världen\" << std::endl;\n" "}\n" "\n" "class some_class\n" "{\n" "public:\n" " some_class\n" " {\n" " button.signal_clicked().connect(sigc::ptr_fun(&on_button_clicked));\n" " button.signal_clicked().connect(sigc::mem_fun(*this, &some_class::on_button_clicked));\n" " }\n" " void on_button_clicked();\n" "private:\n" " Gtk::Button button {\"Hej världen\"};\n" "};\n" #. (itstool) path: section/para #: C/index-in.docbook:9008 msgid "" "The first call to connect() is just like the one we " "saw last time; nothing new here." msgstr "" "Det första anropet till connect() är precis som det " "vi såg sist, inget nytt här." #. (itstool) path: section/para #: C/index-in.docbook:9011 #, fuzzy msgid "" "The next is more interesting. sigc::mem_fun() is called " "with two arguments. The first argument is *this, " "which is the object that our new slot will be pointing at. The second " "argument is a pointer to one of its methods. This particular version of " "sigc::mem_fun() creates a slot which will, when " "\"called\", call the pointed-to method of the specified object." msgstr "" "Nästa är mer intressant. sigc::mem_fun() anropas med " "två argument. Det första argumentet är *this som är " "objektet som vårt nya fack kommer peka på. Det andra argumentet är en pekare " "till en av dess metoder. Denna specifika version av sigc::" "mem_fun() skapar ett fack som, när det ”anropas”, anropar metoden " "som pekas på i det angivna objektet." #. (itstool) path: section/para #: C/index-in.docbook:9020 #, fuzzy msgid "" "Another thing to note about this example is that we made the call to " "connect() twice for the same signal object. This is " "perfectly fine - when the button is clicked, both signal handlers will be " "called." msgstr "" "En annan sak att observera om detta exempel är att vi gjort anropet till " "connect() två gånger för samma signalobjekt. Detta " "är fullständigt lugnt - när knappen klickas på så kommer båda " "signalhanterarna anropas." #. (itstool) path: section/para #: C/index-in.docbook:9027 #, fuzzy msgid "" "We just told you that the button's clicked signal is " "expecting to call a method with no arguments. All signals have requirements " "like this - you can't hook a function with two arguments to a signal " "expecting none (unless you use an adapter, such as sigc::bind(), of course). Therefore, it's important to know what type of signal " "handler you'll be expected to connect to a given signal." msgstr "" "Vi berättade just för dig att knappens clicked-signal " "förväntar sig att anropa en metod utan argument. Alla signaler har såna här " "krav - du kan inte kroka en funktion med två argument till en signal som " "inte förväntar sig något (om du förstås inte använder en adapter som " "sigc::bind()). Det är därför viktigt att veta vilken " "typ av signalhanterare som du förväntas ansluta till en given signal." #. (itstool) path: section/title #: C/index-in.docbook:9039 msgid "Writing signal handlers" msgstr "Skriva signalhanterare" #. (itstool) path: section/para #: C/index-in.docbook:9041 #, fuzzy msgid "" "To find out what type of signal handler you can connect to a signal, you can " "look it up in the reference documentation or the header file. Here's an " "example of a signal declaration you might see in the gtkmm headers:" msgstr "" "För att få reda på vilken typ av signalhanterare du kan ansluta till en " "signal kan du slå upp den i referensdokumentationen eller header-filen. Här " "är ett exempel på en signaldeklaration som du kan se i gtkmm-headerfilerna:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9047 #, no-wrap msgid "" "\n" "Glib::SignalProxy<bool(Gtk::DirectionType)> signal_focus()\n" msgstr "" "\n" "Glib::SignalProxy<bool(Gtk::DirectionType)> signal_focus()\n" #. (itstool) path: section/para #: C/index-in.docbook:9051 #, fuzzy msgid "" "Other than the signal's name (focus), the template " "arguments are important to note here. The first argument, bool, " "is the type that the signal handler should return; and the type within " "parentheses, Gtk::DirectionType, is the type of this signal's " "first, and only, argument. By looking at the reference documentation, you " "can see the names of the arguments too." msgstr "" "Förutom signalens namn (focus) är mallargumenten viktiga " "att notera här. Det första argumentet, bool, är typen som " "signalhanteraren ska returnera; och typen inom parenteser, Gtk::" "DirectionType, är typen på denna signals första, och enda, argument. " "Genom att titta på referensdokumentationen kan du även se namnen på " "argumenten." #. (itstool) path: section/para #: C/index-in.docbook:9060 #, fuzzy msgid "" "The same principles apply for signals which have more arguments. Here's one " "with three (taken from <gtkmm/textbuffer.h>):" msgstr "" "Samma principer gäller för signaler som har fler argument. Här är en med tre " "(tagen från <gtkmm/textbuffer.h>):" #. (itstool) path: section/programlisting #: C/index-in.docbook:9065 #, no-wrap msgid "" "\n" "Glib::SignalProxy<void(TextBuffer::iterator&, const Glib::ustrin&, int)> signal_insert();\n" msgstr "" "\n" "Glib::SignalProxy<void(TextBuffer::iterator&, const Glib::ustrin&, int)> signal_insert();\n" #. (itstool) path: section/para #: C/index-in.docbook:9069 #, fuzzy msgid "" "It follows the same form. The first type is void, so that " "should be our signal handler's return type. The following three types are " "the argument types, in order. Our signal handler's prototype could look like " "this:" msgstr "" "Det följer samma form. Den första typen är void, så det ska " "vara vår signalhanterares returtyp. De följande tre typerna är " "argumenttyperna i ordning. Vår signalhanterares prototyp skulle kunna se ut " "så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9076 #, fuzzy, no-wrap msgid "" "\n" "void on_insert(TextBuffer::iterator& pos, const Glib::ustring& text, int bytes)\n" msgstr "" "\n" "void on_insert(TextBuffer::iterator& pos, const Glib::ustring& text, int bytes)\n" #. (itstool) path: section/title #: C/index-in.docbook:9082 msgid "Disconnecting signal handlers" msgstr "Koppla från signalhanterare" #. (itstool) path: section/para #: C/index-in.docbook:9084 msgid "" "Let's take another look at a Signal's connect method:" msgstr "" "Låt oss ta ännu en titt på en connect-metod för en Signal:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9088 #, fuzzy, no-wrap msgid "" "\n" "sigc::connection signal<void(int)>::connect(const sigc::slot<void(int)>&);\n" msgstr "" "\n" "sigc::connection signal<void(int)>::connect(const sigc::slot<void(int)>&);\n" #. (itstool) path: section/para #: C/index-in.docbook:9092 #, fuzzy msgid "" "The returned sigc::connection can be used to control " "the connection. By keeping a connection object you can disconnect its " "associated signal handler using the sigc::connection::" "disconnect() method." msgstr "" "Den returnerade sigc::connection kan användas för att " "styra anslutningen. Genom att behålla ett anslutningsobjekt så kan du koppla " "från dess associerade signalhanterare med metoden sigc::" "connection::disconnect()." #. (itstool) path: section/title #: C/index-in.docbook:9100 msgid "Overriding default signal handlers" msgstr "Åsidosätta standardsignalhanterarna" #. (itstool) path: section/para #: C/index-in.docbook:9102 msgid "" "So far we've told you to perform actions in response to button-presses and " "the like by handling signals. That's certainly a good way to do things, but " "it's not the only way." msgstr "" "Så här långt har vi sagt till dig att utföra åtgärder som var till " "knapptryckningar och liknande genom att hantera signaler. Det är sannerligen " "ett bra sätt att göra saker, men inte det enda sättet." #. (itstool) path: section/para #: C/index-in.docbook:9109 #, fuzzy msgid "" "Instead of laboriously connecting signal handlers to signals, you can simply " "make a new class which inherits from a widget - say, a Button - and then " "override the default signal handler, such as Button::on_clicked(). This can " "be a lot simpler than hooking up signal handlers for everything." msgstr "" "I stället för att strävsamt ansluta signalhanterare till signaler kan du " "helt enkelt göra en ny klass som ärver från en komponent - exempelvis en " "Button - och sedan åsidosätta standardsignalhanteraren, som Button::" "on_clicked(). Detta kan vara mycket enklare än att koppla in signalhanterare " "för allt." #. (itstool) path: section/para #: C/index-in.docbook:9116 #, fuzzy msgid "" "Subclassing isn't always the best way to accomplish things. It is only " "useful when you want the widget to handle its own signal by itself. If you " "want some other class to handle the signal then you'll need to connect a " "separate handler. This is even more true if you want several objects to " "handle the same signal, or if you want one signal handler to respond to the " "same signal from different objects." msgstr "" "Underklassning är inte alltid bästa sättet att åstadkomma saker. Det är bara " "användbart när du vill att komponenten själv ska hantera sin egen signal. Om " "du vill att någon annan klass ska hantera signalen så kommer du behöva " "ansluta en separat hanterare. Detta är till och med mera sant om du vill att " "flera objekt ska hantera samma signal, eller om du vill att en " "signalhanterare ska svara på samma signal från olika objekt." #. (itstool) path: section/para #: C/index-in.docbook:9121 #, fuzzy msgid "" "gtkmm classes are designed with overriding in " "mind; they contain virtual member methods specifically intended to be " "overridden." msgstr "" "gtkmm-klasser designas med åsidosättning i " "åtanke; de innehåller virtuella medlemsmetoder specifikt avsedda att " "åsidosättas." #. (itstool) path: section/para #: C/index-in.docbook:9126 msgid "Let's look at an example of overriding:" msgstr "Låt oss titta på ett exempel på åsidosättning:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9130 #, fuzzy, no-wrap msgid "" "\n" "#include <gtkmm/button.h>\n" "\n" "class OverriddenButton : public Gtk::Button\n" "{\n" "protected:\n" " void on_clicked() override;\n" "}\n" "\n" "void OverriddenButton::on_clicked()\n" "{\n" " std::cout << \"Hello World\" << std::endl;\n" "\n" " // call the base class's version of the method:\n" " Gtk::Button::on_clicked();\n" "}\n" msgstr "" "\n" "#include <gtkmm/button.h>\n" "\n" "class OverriddenButton : public Gtk::Button\n" "{\n" "protected:\n" " void on_clicked() override;\n" "}\n" "\n" "void OverriddenButton::on_clicked()\n" "{\n" " std::cout << \"Hej världen\" << std::endl;\n" "\n" " // anropa basklassens version av metoden:\n" " Gtk::Button::on_clicked();\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:9148 #, fuzzy msgid "" "Here we define a new class called OverriddenButton, " "which inherits from Gtk::Button. The only thing we " "change is the on_clicked() method, which is called " "whenever Gtk::Button emits the clicked signal. This method prints \"Hello World\" to stdout, and then calls the original, overridden method, to let " "Gtk::Button do what it would have done had we not " "overridden." msgstr "" "Här definierar vi en ny klass kallad OverriddenButton " "som ärver från Gtk::Button. Det enda vi ändrar är " "metoden on_clicked(), vilken anropas närhelst " "Gtk::Button sänder ut signalen clicked. Denna metod skriver ut ”Hej världen” till stdout, och anropar sedan den ursprungliga, åsidosatta metoden, för att " "låta Gtk::Button göra vad den skulle ha gjort om vi " "inte hade åsidosatt." #. (itstool) path: section/para #: C/index-in.docbook:9159 #, fuzzy msgid "" "You don't always need to call the parent's method; there are times when you " "might not want to. Note that we called the parent method after writing \"Hello World\", but we could have called it before. In " "this simple example, it hardly matters much, but there are times when it " "will. With connected signal handlers, it's not quite so easy to change " "details like this, and you can do something here which you can't do at all " "with connected signal handlers: you can call the parent method in the " "middle of your custom code." msgstr "" "Du behöver inte alltid anropa den överordnades metod, det finns tillfällen " "då du kan ske inte vill det. Observera att vi anropade den överordnade " "metoden efter vi skrivit ”Hej världen”, men vi kunde ha " "anropat det innan. I detta enkla exempel spelar det inte mycket roll, men " "det finns tillfällen då det kommer göra det. Med anslutna signalhanterare är " "det inte riktigt så lätt att ändra detaljer så här, och du kan göra något " "hör som du inte kan göra alls med anslutna signalhanterare: du kan anropa " "den överordnade metoden i mitten av din anpassade kod." #. (itstool) path: section/title #: C/index-in.docbook:9173 msgid "Binding extra arguments" msgstr "Binda extra argument" #. (itstool) path: section/para #: C/index-in.docbook:9175 #, fuzzy msgid "" "If you use one signal handler to catch the same signal from several widgets, " "you might like that signal handler to receive some extra information. For " "instance, you might want to know which button was clicked. You can do this " "with sigc::bind(). Here's some code from the helloworld2 example." msgstr "" "Om du använder en signalhanterare för att fånga samma signal från flera " "komponenter kan du vilja att den signalhanteraren erhåller lite extra " "information. Till exempel kan du vilja veta vilken knapp som klickades på. " "Du kan göra detta med sigc::bind(). Här är lite kod " "från helloworld2-exemplet. <_:" "programlisting-1/> Detta säger att vi vill att signalen ska skicka ett extra " "Glib::ustring-argument till signalhanteraren, och att " "värdet på det argumentet ska vara ”button 1”. Vi kommer givetvis behöva " "lägga till det extra argumentet till deklarationen för vår signalhanterare: " "<_:programlisting-2/> En vanlig ”clicked”-signalhanterare skulle förstås " "inte ha några argument." #. (itstool) path: section/programlisting #: C/index-in.docbook:9181 #, fuzzy, no-wrap msgid "" "\n" "m_button1.signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &HelloWorld::on_button_clicked), \"button 1\"));\n" msgstr "" "\n" "m_button1.signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &HelloWorld::on_button_clicked), \"knapp 1\"));\n" #. (itstool) path: section/para #: C/index-in.docbook:9184 msgid "" "This says that we want the signal to send an extra Glib::ustring argument to the signal handler, and that the value of that " "argument should be \"button 1\". Of course we will need to add that extra " "argument to the declaration of our signal handler:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:9189 #, no-wrap msgid "" "\n" "void on_button_clicked(const Glib::ustring& data);\n" msgstr "" "\n" "void on_button_clicked(const Glib::ustring& data);\n" #. (itstool) path: section/para #: C/index-in.docbook:9192 msgid "Of course, a normal \"clicked\" signal handler would have no arguments." msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:9194 #, fuzzy msgid "" "sigc::bind() is not commonly used, but you might find " "it helpful sometimes. If you are familiar with GTK programming then you have probably noticed that this is similar " "to the extra gpointer data arguments which all GTK " "callbacks have. This is generally overused in GTK " "to pass information that should be stored as member data in a derived " "widget, but widget derivation is very difficult in C. We have far less need " "of this hack in gtkmm." msgstr "" "sigc::bind() används vanligen inte, men det kan ibland " "vara hjälpsamt. Om du är bekant med GTK-" "programmering så har du troligen märkta att detta är likt de extra " "gpointer data-argument som alla GTK-återanrop har. Detta " "överanvänds allmänt i GTK för att skicka " "information som ska lagras som medlemsdata i en härledd komponent, men " "komponenthärledning är väldigt svårt i C. Vi har mycket mindre behov av " "detta hack i gtkmm." #. (itstool) path: section/title #: C/index-in.docbook:9206 #, fuzzy msgid "Event signals" msgstr "Händelsesignaler" #. (itstool) path: section/para #: C/index-in.docbook:9208 #, fuzzy msgid "" "Event signals are emitted as a result of some user input, for instance a key " "press or a mouse motion. Usually you don't handle these events directly. " "Instead, you use a subclass of Gtk::EventController, " "such as Gtk::EventControllerKey or Gtk::" "GestureClick. Event controllers can be added to a widget with " "Gtk::Widget::add_controller()." msgstr "" "Händelsesignaler sänds ut som resultat av någon användarinmatning, " "exempelvis en tangenttryckning eller en musrörelse. Vanligen hanterare du " "inte dessa händelser direkt. I stället använder du en underklass till " "Gtk::EventController, som Gtk::" "EventControllerKey eller Gtk::GestureClick. Händelsekontroller kan läggas till i en komponent med " "Gtk::Widget::add_controller()." #. (itstool) path: section/para #: C/index-in.docbook:9215 #, fuzzy msgid "" "You might occasionally find it useful to handle events when there's " "something you can't accomplish with normal signals. Gtk::Button, for example, does not send mouse-pointer coordinates with its " "clicked signal, but you could handle Gtk::" "GestureClick::signal_pressed() if you needed this information. " "Gtk::EventControllerKey::signal_key_pressed() is " "often used to handle key-presses." msgstr "" "Du kan emellanåt finna det användbart att hantera händelse när det är något " "du inte kan åstadkomma med vanliga signaler. Gtk::Button skickar exempelvis inte muspekarkoordinater med sin " "clicked-signal, men du skulle kunna hantera " "Gtk::GestureClick::signal_pressed() om du behövde " "denna information. Gtk::EventControllerKey::" "signal_key_pressed() används ofta för att hantera " "tangenttryckningar." #. (itstool) path: section/para #: C/index-in.docbook:9225 #, fuzzy msgid "" "Some event controller signals behave slightly differently. The value " "returned from the signal handler indicates whether it has fully \"handled\" " "the event. If the value is false then gtkmm will pass the event on to the next signal handler. If the value " "is true then no other signal handlers will need to be " "called." msgstr "" "Vissa händelsekontrollsignaler beter sig lite annorlunda. Värdet som " "returneras från signalhanteraren indikerar huruvida den har ”hanterat” " "händelsen fullständigt. Om värdet är false så kommer " "gtkmm skicka händelsen vidare till nästa " "signalhanterare. Om värdet är true kommer inga andra " "signalhanterare behöva anropas." #. (itstool) path: section/para #: C/index-in.docbook:9233 #, fuzzy msgid "" "Handling an event doesn't affect the Widget's other signals. If you handle " "Gtk::GestureClick::signal_pressed() for " "Gtk::Button, you'll still be able to get the " "clicked signal. They are emitted at (nearly) the same " "time." msgstr "" "Att hantera en händelse påverkar inte vår Widgets andra signaler. Om du " "hanterar Gtk::GestureClick::signal_pressed() för " "Gtk::Button kommer du fortfarande kunna få " "clicked-signalen. De sänds ut (nästan) samtidigt." #. (itstool) path: section/programlisting #: C/index-in.docbook:9242 #, fuzzy, no-wrap msgid "" "\n" "void on_button_press(int n_press, double x, double y);\n" "Gtk::Button button(\"label\");\n" "auto controller = Gtk::GestureClick::create();\n" "controller->set_propagation_phase(Gtk::PropagationPhase::CAPTURE);\n" "controller->signal_pressed().connect(sigc::ptr_fun(&on_button_press));\n" "button.add_controller(controller);\n" msgstr "" "\n" "void on_button_press(int n_press, double x, double y);\n" "Gtk::Button button(\"label\");\n" "auto controller = Gtk::GestureClick::create();\n" "controller->signal_pressed().connect(sigc::ptr_fun(&on_button_press));\n" "button.add_controller(controller);\n" #. (itstool) path: section/para #: C/index-in.docbook:9250 msgid "" "When the mouse is over the button and a mouse button is pressed, " "on_button_press() will be called." msgstr "" "När musen är ovanför knappen och en musknapp trycks ned kommer " "on_button_press() att anropas." #. (itstool) path: section/para #: C/index-in.docbook:9254 msgid "" "The call to set_propagation_phase() is necessary in " "this case because the GtkButton C class adds an event " "controller, handling button clicks in the capture phase. " "GtkButton claims the event, meaning that the event is " "not propagated in the bubble phase, where event controllers handle events by " "default." msgstr "" #. (itstool) path: section/title #: C/index-in.docbook:9263 msgid "Signal Handler sequence" msgstr "Signalhanterarsekvens" #. (itstool) path: section/para #: C/index-in.docbook:9265 #, fuzzy msgid "" "By default, signal handlers that return void are called after " "any previously-connected signal handlers. However, this can be a problem " "with event signals that can stop event propagation by returning " "true. For instance, the existing signal handlers, or the " "default signal handler, might return true to stop other " "signal handlers from being called. To specify that your signal handler " "should be called before the other signal handlers, you can specify " "false for the after parameter. This " "connect() parameter is optional, if the signal " "handler returns void. For instance," msgstr "" "Som standard anropas signalhanterare som returnerar void efter " "alla tidigare anslutna signalhanterare. Detta kan dock bli ett problem med " "händelsesignaler som kan stoppa händelsespridning genom att returnera " "true. De befintliga signalhanterarna eller " "standardsignalhanteraren kan exempelvis returnera true " "för att stoppa andra signalhanterare från att anropas. För att ange att din " "signalhanterare ska anropas innan de andra signalhanterarna kan du ange " "false för parametern after. Denna " "connect()-parameter är valfri om signalhanteraren " "returnerar void. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:9275 #, fuzzy, no-wrap msgid "" "\n" "key_controller->signal_key_pressed().connect(sigc::ptr_fun(&on_mywindow_key_pressed), false);\n" msgstr "" "\n" "key_controller->signal_key_pressed().connect(sigc::ptr_fun(&on_mywindow_key_pressed), false);\n" #. (itstool) path: section/para #: C/index-in.docbook:9278 #, fuzzy msgid "The event is propagated between widgets in 3 phases. <_:orderedlist-1/>" msgstr "Händelsen sprids mellan komponenter i tre faser. <_:orderedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:9285 #, fuzzy msgid "" "The Input " "Handling chapter in the GTK documentation describes user input " "handling in more detail." msgstr "" "Kapitlet Input Handling i GTK-dokumentationen beskriver hantering av " "användarinmatning mer detaljerat." #. (itstool) path: section/title #: C/index-in.docbook:9294 msgid "Exceptions in signal handlers" msgstr "Undantag i signalhanterare" #. (itstool) path: section/para #: C/index-in.docbook:9296 #, fuzzy msgid "" "When a program is aborted because of an unhandled C++ exception, it's " "sometimes possible to use a debugger to find the location where the " "exception was thrown. This is more difficult than usual if the exception was " "thrown from a signal handler." msgstr "" "När ett program avbryts på grund av ett ohanterat C++-undantag är det ibland " "möjligt att använda en felsökare för att hitta platsen där undantaget " "kastades. Detta är svårare än vanligt om undantaget kastades från en " "signalhanterare." #. (itstool) path: section/para #: C/index-in.docbook:9301 msgid "" "This section describes primarily what you can expect on a Linux system, when " "you use the gdb " "debugger." msgstr "" "Detta avsnitt beskriver främst vad du kan förvänta dig på ett Linux-system " "när du använder felsökaren gdb." #. (itstool) path: section/para #: C/index-in.docbook:9305 #, fuzzy msgid "" "First, let's look at a simple example where an exception is thrown from a " "normal function (no signal handler)." msgstr "" "Låt oss först titta på ett enkelt exempel där ett undantag kastas från en " "normal funktion (ingen signalhanterare)." #. (itstool) path: section/programlisting #: C/index-in.docbook:9309 #, fuzzy, no-wrap msgid "" "\n" "// without_signal.cc\n" "#include <gtkmm.h>\n" "\n" "bool throwSomething()\n" "{\n" " throw \"Something\";\n" " return true;\n" "}\n" "\n" "int main(int argc, char** argv)\n" "{\n" " throwSomething();\n" " auto app = Gtk::Application::create(\"org.gtkmm.without_signal\");\n" " return app->run();\n" "}\n" msgstr "" "\n" "// without_signal.cc\n" "#include <gtkmm.h>\n" "\n" "bool throwSomething()\n" "{\n" " throw \"Something\";\n" " return true;\n" "}\n" "\n" "int main(int argc, char** argv)\n" "{\n" " throwSomething();\n" " auto app = Gtk::Application::create(\"org.gtkmm.without_signal\");\n" " return app->run();\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:9326 #, fuzzy msgid "" "Here is an excerpt from a gdb session. Only the " "most interesting parts of the output are shown." msgstr "" "Här är ett utdrag från en gdb-session. Endast de " "mest intressanta delarna av utmatningen visas. <_:programlisting-1/> Du kan " "se att undantaget kastades från without_signal.cc, rad " "6 (throw \"Something\";)." #. (itstool) path: section/programlisting #: C/index-in.docbook:9330 #, fuzzy, no-wrap msgid "" "\n" "> gdb without_signal\n" "(gdb) run\n" "terminate called after throwing an instance of 'char const*'\n" "\n" "Program received signal SIGABRT, Aborted.\n" "(gdb) backtrace\n" "#7 0x08048864 in throwSomething () at without_signal.cc:6\n" "#8 0x0804887d in main (argc=1, argv=0xbfffecd4) at without_signal.cc:12\n" msgstr "" "\n" "> gdb without_signal\n" "(gdb) run\n" "terminate called after throwing an instance of 'char const*'\n" "\n" "Program received signal SIGABRT, Aborted.\n" "(gdb) backtrace\n" "#7 0x08048864 in throwSomething () at without_signal.cc:6\n" "#8 0x0804887d in main (argc=1, argv=0xbfffecd4) at without_signal.cc:12\n" #. (itstool) path: section/para #: C/index-in.docbook:9340 #, fuzzy msgid "" "You can see that the exception was thrown from without_signal.cc, line 6 (throw \"Something\";)." msgstr "" "Här är ett utdrag från en gdb-session. Endast de " "mest intressanta delarna av utmatningen visas. <_:programlisting-1/> Du kan " "se att undantaget kastades från without_signal.cc, rad " "6 (throw \"Something\";)." #. (itstool) path: section/para #: C/index-in.docbook:9343 #, fuzzy msgid "" "Now let's see what happens when an exception is thrown from a signal " "handler. Here's the source code." msgstr "" "Låt oss nu se vad som händer när ett undantag kastas från en " "signalhanterare. Här är källkoden." #. (itstool) path: section/programlisting #: C/index-in.docbook:9347 #, fuzzy, no-wrap msgid "" "\n" "// with_signal.cc\n" "#include <gtkmm.h>\n" "\n" "bool throwSomething()\n" "{\n" " throw \"Something\";\n" " return true;\n" "}\n" "\n" "int main(int argc, char** argv)\n" "{\n" " Glib::signal_timeout().connect(sigc::ptr_fun(throwSomething), 500);\n" " auto app = Gtk::Application::create(\"org.gtkmm.with_signal\");\n" " app->hold();\n" " return app->run();\n" "}\n" msgstr "" "\n" "// with_signal.cc\n" "#include <gtkmm.h>\n" "\n" "bool throwSomething()\n" "{\n" " throw \"Something\";\n" " return true;\n" "}\n" "\n" "int main(int argc, char** argv)\n" "{\n" " Glib::signal_timeout().connect(sigc::ptr_fun(throwSomething), 500);\n" " auto app = Gtk::Application::create(\"org.gtkmm.with_signal\");\n" " app->hold();\n" " return app->run();\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:9365 #, fuzzy #| msgid "Using the git version of gtkmm" msgid "And here's an excerpt from a gdb session." msgstr "Använda git-versionen av gtkmm" #. (itstool) path: section/programlisting #: C/index-in.docbook:9368 #, fuzzy, no-wrap msgid "" "\n" "> gdb with_signal\n" "(gdb) run\n" "(with_signal:2703): glibmm-ERROR **:\n" "unhandled exception (type unknown) in signal handler\n" "\n" "Program received signal SIGTRAP, Trace/breakpoint trap.\n" "(gdb) backtrace\n" "#2 0x0063c6ab in glibmm_unexpected_exception () at exceptionhandler.cc:77\n" "#3 Glib::exception_handlers_invoke () at exceptionhandler.cc:150\n" "#4 0x0063d370 in glibmm_source_callback (data=0x804d620) at main.cc:212\n" "#13 0x002e1b31 in Gtk::Application::run (this=0x804f300) at application.cc:178\n" "#14 0x08048ccc in main (argc=1, argv=0xbfffecd4) at with_signal.cc:16\n" msgstr "" "\n" "> gdb with_signal\n" "(gdb) run\n" "(with_signal:2703): glibmm-ERROR **:\n" "unhandled exception (type unknown) in signal handler\n" "\n" "Program received signal SIGTRAP, Trace/breakpoint trap.\n" "(gdb) backtrace\n" "#2 0x0063c6ab in glibmm_unexpected_exception () at exceptionhandler.cc:77\n" "#3 Glib::exception_handlers_invoke () at exceptionhandler.cc:150\n" "#4 0x0063d370 in glibmm_source_callback (data=0x804d620) at main.cc:212\n" "#13 0x002e1b31 in Gtk::Application::run (this=0x804f300) at application.cc:178\n" "#14 0x08048ccc in main (argc=1, argv=0xbfffecd4) at with_signal.cc:16\n" #. (itstool) path: section/para #: C/index-in.docbook:9382 #, fuzzy msgid "" "The exception is caught in glibmm, and the " "program ends with a call to g_error(). Other exceptions " "may result in different behavior, but in any case the exception from a " "signal handler is caught in glibmm or " "gtkmm, and gdb can't " "see where it was thrown." msgstr "" "Och här kommer ett utdrag från en gdb-session. <_:" "programlisting-1/> Undantaget fångas i glibmm och " "programmet avslutas med ett anrop till g_error(). Andra " "undantag kan resultera i annat beteenden, men i vilket fall fångas " "undantaget från en signalhanterare i glibmm eller " "gtkmm, och gdb kan " "inte se var det kastades." #. (itstool) path: section/para #: C/index-in.docbook:9388 #, fuzzy msgid "" "To see where the exception is thrown, you can use the gdb command catch throw." msgstr "" "För att se var undantaget kastas kan du använda gdb-kommandot catch throw." #. (itstool) path: section/programlisting #: C/index-in.docbook:9392 #, fuzzy, no-wrap msgid "" "\n" "> gdb with_signal\n" "(gdb) catch throw\n" "Catchpoint 1 (throw)\n" "(gdb) run\n" "Catchpoint 1 (exception thrown), 0x00714ff0 in __cxa_throw ()\n" "(gdb) backtrace\n" "#0 0x00714ff0 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6\n" "#1 0x08048bd4 in throwSomething () at with_signal.cc:6\n" "(gdb) continue\n" "Continuing.\n" "(with_signal:2375): glibmm-ERROR **\n" "unhandled exception (type unknown) in signal handler\n" "\n" "Program received signal SIGTRAP, Trace/breakpoint trap.\n" msgstr "" "\n" "> gdb with_signal\n" "(gdb) catch throw\n" "Catchpoint 1 (throw)\n" "(gdb) run\n" "Catchpoint 1 (exception thrown), 0x00714ff0 in __cxa_throw ()\n" "(gdb) backtrace\n" "#0 0x00714ff0 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6\n" "#1 0x08048bd4 in throwSomething () at with_signal.cc:6\n" "(gdb) continue\n" "Continuing.\n" "(with_signal:2375): glibmm-ERROR **\n" "unhandled exception (type unknown) in signal handler\n" "\n" "Program received signal SIGTRAP, Trace/breakpoint trap.\n" #. (itstool) path: section/para #: C/index-in.docbook:9408 #, fuzzy msgid "" "If there are many caught exceptions before the interesting uncaught one, " "this method can be tedious. It can be automated with the following " "gdb commands." msgstr "" "Om det finns många fångade undantag innan det intressanta ofångade så kan " "denna metod vara långrandig. Den kan automatiseras med följande " "gdb-kommandon. <_:programlisting-1/> Dessa " "kommandon kommer skriva ut ett bakåtspår från varje throw och " "fortsätta. Bakåtspåret från den sista (eller möjligen den näst sista) " "throw innan programmet stoppar är den som är intressant." #. (itstool) path: section/programlisting #: C/index-in.docbook:9413 #, fuzzy, no-wrap msgid "" "\n" "(gdb) catch throw\n" "(gdb) commands\n" "(gdb) backtrace\n" "(gdb) continue\n" "(gdb) end\n" "(gdb) set pagination off\n" "(gdb) run\n" msgstr "" "\n" "(gdb) catch throw\n" "(gdb) commands\n" "(gdb) backtrace\n" "(gdb) continue\n" "(gdb) end\n" "(gdb) set pagination off\n" "(gdb) run\n" #. (itstool) path: section/para #: C/index-in.docbook:9422 #, fuzzy msgid "" "These commands will print a backtrace from each throw and " "continue. The backtrace from the last (or possibly the last but one) " "throw before the program stops, is the interesting one." msgstr "" "Om det finns många fångade undantag innan det intressanta ofångade så kan " "denna metod vara långrandig. Den kan automatiseras med följande " "gdb-kommandon. <_:programlisting-1/> Dessa " "kommandon kommer skriva ut ett bakåtspår från varje throw och " "fortsätta. Bakåtspåret från den sista (eller möjligen den näst sista) " "throw innan programmet stoppar är den som är intressant." #. (itstool) path: appendix/title #: C/index-in.docbook:9431 msgid "Creating your own signals" msgstr "Skapa dina egna signaler" #. (itstool) path: appendix/para #: C/index-in.docbook:9433 msgid "" "Now that you've seen signals and signal handlers in gtkmm, you might like to use the same technique to allow interaction " "between your own classes. That's actually very simple by using the " "libsigc++ library directly." msgstr "" "Nu då du sett signaler och signalhanterare i gtkmm kanske du vill använda samma teknik för att tillåta interaktion " "mellan dina egna klasser. Det är faktiskt väldigt enkelt genom att direkt " "använda libsigc++-biblioteket." #. (itstool) path: appendix/para #: C/index-in.docbook:9439 #, fuzzy msgid "" "This isn't purely a gtkmm or GUI issue. " "gtkmm uses libsigc++ " "to implement its proxy wrappers for the GTK " "signal system, but for new, non-GTK signals, you can create pure C++ " "signals, using the sigc::signal<> template." msgstr "" "Detta är inte ett rent gtkmm- eller GUI-problem. " "gtkmm använder libsigc++ för att implementera sina proxyomslag för GTK-signalsystemet, men för nya, icke-GTK-signaler kan du skapa " "rena C++-signaler med mallen sigc::signal<>." #. (itstool) path: appendix/para #: C/index-in.docbook:9446 msgid "" "For instance, to create a signal that sends 2 parameters, a bool and an int, just declare a sigc::signal, like so:" msgstr "" "För att exempelvis skapa en signal som skickar 2 parametrar, en bool och en int, deklarerar du bara en sigc::" "signal, så här:" #. (itstool) path: appendix/programlisting #: C/index-in.docbook:9451 #, fuzzy, no-wrap msgid "" "\n" "sigc::signal<void(bool, int)> signal_something;\n" msgstr "" "\n" "sigc::signal<void(bool, int)> signal_something;\n" #. (itstool) path: appendix/para #: C/index-in.docbook:9454 #, fuzzy msgid "" "You could just declare that signal as a public member variable, but some " "people find that distasteful and prefer to make it available via an accessor " "method, like so:" msgstr "" "Du skulle kunna helt enkelt deklarera den signalen som en offentlig " "medlemsvariabel, men vissa finner det oaptitligt och föredrar att göra den " "tillgänglig med en åtkomstmetod, så här:" #. (itstool) path: appendix/programlisting #: C/index-in.docbook:9459 #, fuzzy, no-wrap msgid "" "\n" "class Server\n" "{\n" "public:\n" " //signal accessor:\n" " using type_signal_something = sigc::signal<void(bool, int)>;\n" " type_signal_something signal_something();\n" "\n" "protected:\n" " type_signal_something m_signal_something;\n" "};\n" "\n" "Server::type_signal_something Server::signal_something()\n" "{\n" " return m_signal_something;\n" "}\n" msgstr "" "\n" "class Server\n" "{\n" "public:\n" " //signal accessor:\n" " using type_signal_something = sigc::signal<void(bool, int)>;\n" " type_signal_something signal_something();\n" "\n" "protected:\n" " type_signal_something m_signal_something;\n" "};\n" "\n" "Server::type_signal_something Server::signal_something()\n" "{\n" " return m_signal_something;\n" "}\n" #. (itstool) path: appendix/para #: C/index-in.docbook:9477 msgid "" "You can then connect to the signal using the same syntax used when " "connecting to gtkmm signals. For instance," msgstr "" "Du kan sedan ansluta till signalen med samma syntax som du använder när du " "ansluter till gtkmm-signaler. Till exempel," #. (itstool) path: appendix/programlisting #: C/index-in.docbook:9481 #, fuzzy, no-wrap msgid "" "\n" "server.signal_something().connect(\n" " sigc::mem_fun(client, &Client::on_server_something) );\n" msgstr "" "\n" "server.signal_something().connect(\n" " sigc::mem_fun(client, &Client::on_server_something) );\n" #. (itstool) path: section/para #: C/index-in.docbook:9489 msgid "This is a full working example that defines and uses custom signals." msgstr "" "Detta är ett fullt fungerande exempel som definierar och använder anpassade " "signaler." #. (itstool) path: section/para #: C/index-in.docbook:9493 msgid "" "Source Code" msgstr "" "Källkod" #. (itstool) path: appendix/title #: C/index-in.docbook:9501 msgid "Comparison with other signalling systems" msgstr "Jämförelse med andra signalsystem" #. (itstool) path: appendix/para #: C/index-in.docbook:9503 #, fuzzy msgid "" "(An aside: GTK calls this scheme \"signalling\"; " "the sharp-eyed reader with GUI toolkit experience will note that this same " "design is often seen under the name of \"broadcaster-listener\" (e.g., in " "Metrowerks' PowerPlant framework for the Macintosh). It works in much the " "same way: one sets up broadcasters, and then connects " "listeners to them; the broadcaster keeps a list of the " "objects listening to it, and when someone gives the broadcaster a message, " "it calls all of its objects in its list with the message. In " "gtkmm, signal objects play the role of " "broadcasters, and slots play the role of listeners - sort of. More on this " "later.)" msgstr "" "(Ett bispår: GTK kallar detta schema " "”signalling”; den skarpögde läsaren med erfarenhet från GUI-verktygslådor " "kommer se att denna design ofta ses under namnet ”broadcaster-listener” (t." "ex. i Metrowerks PowerPlant-ramverk för Macintosh). Det fungerar i stort på " "samma sätt: man konfigurerar broadcasters, och ansluter " "sedan listeners till dem; sändaren behåller en lista över " "objekten som lyssnar på den, och när någon ger sändaren ett meddelande " "anropar den alla sina objekt i sin lista med meddelandet. I " "gtkmm spelar signalobjekt rollen för sändare, och " "fack spelar rollen som lyssnare - på sätt och vis. Mer om detta senare.)" #. (itstool) path: appendix/para #: C/index-in.docbook:9517 #, fuzzy msgid "" "gtkmm signal handlers are strongly-typed, whereas " "GTK C code allows you to connect a callback with " "the wrong number and type of arguments, leading to a segfault at runtime. " "And, unlike Qt, gtkmm " "achieves this without modifying the C++ language." msgstr "" "gtkmm-signalhanterare är starkt typade, medan " "GTK:s C-kod låter dig ansluta ett återanrop med " "fel antal och typ av argument, vilket leder till ett segmenteringsfel vid " "körning. Till skillnad från Qt åstadkommer även " "gtkmm detta utan att C++-språket." #. (itstool) path: appendix/para #: C/index-in.docbook:9523 #, fuzzy msgid "" "Re. Overriding signal handlers: You can do this in the straight-C world of " "GTK too; that's what GTK's object system is for. But in GTK, you have to go " "through some complicated procedures to get object-oriented features like " "inheritance and overloading. In C++, it's simple, since those features are " "supported in the language itself; you can let the compiler do the dirty work." msgstr "" "Angående åsidosättning av signalhanterare: Du kan göra detta även i GTK:s " "rena C-värld; det är vad GTK:s objektsystem är till för. Men i GTK måste du " "gå igenom några komplicerade procedurer frå att få objektorienterade " "funktioner som arv och överlagring. I C++ är det enkelt, då dessa funktioner " "stöds i själva språket, du kan låta kompilatorn göra det tunga arbetet." #. (itstool) path: appendix/para #: C/index-in.docbook:9531 #, fuzzy msgid "" "This is one of the places where the beauty of C++ really comes out. One " "wouldn't think of subclassing a GTK widget simply to override its action " "method; it's just too much trouble. In GTK, you almost always use signals to " "get things done, unless you're writing a new widget. But because overriding " "methods is so easy in C++, it's entirely practical - and sensible - to " "subclass a button for that purpose." msgstr "" "Det här är en av platserna där skönheten i C++ verkligen visar sig. Ingen " "skulle tänka sig att underklassa en GTK-komponent för att helt enkelt " "åsidosätta dess åtgärdsmetod; det är för mycket jobb. I GTK skulle du nästan " "alltid använda signaler för att få saker gjorda om du inte skriver en ny " "komponent. Men eftersom det är så lätt att åsidosätta metoder i C++ så är " "det fullt praktiskt - och sansat - att underklassa en knapp för det syftet." #. (itstool) path: appendix/title #: C/index-in.docbook:9542 msgid "gtkmm and Win32" msgstr "gtkmm och Win32" #. (itstool) path: appendix/para #: C/index-in.docbook:9543 #, fuzzy msgid "" "One of the major advantages of gtkmm is that it " "is crossplatform. gtkmm programs written on other " "platforms such as GNU/Linux can generally be transferred to Windows (and " "vice versa) with few modifications to the source." msgstr "" "En av de stora fördelarna med gtkmm är att det är " "multiplattform. gtkmm-program som skrivits på " "andra plattformar som GNU/Linux kan allmänt överföras till Windows (och " "tvärtom) med få ändringar i källkoden." #. (itstool) path: appendix/para #: C/index-in.docbook:9548 #, fuzzy msgid "" "gtkmm currently works with the MinGW/GCC compiler with a compiler version " "that supports C++17, such as gcc 7 or 8. It also works with Microsoft Visual " "C++ 2017 15.7.x or later (including the freely available express/community " "editions) on the Windows platform. There is an installer available for " "gtkmm on Microsoft Windows, but as of this " "writing (October 2020) it has not been updated for a long time. Please be " "aware that although normally it is fine to mix builds done with Visual " "Studio 2017 and 2019, please do not do so when building gtkmm with its -mm dependencies." msgstr "" "gtkmm fungerar för närvarande med MinGW/GCC-kompilatorn med en " "kompilatorversion som stöder C++17, som gcc 7 eller 8. Det fungerar också " "med Microsoft Visual C++ 2017 15.7.x eller senare (inklusive de gratis " "tillgängliga express/community-utgåvorna) på Windows-plattformen. Det finns " "en installerare tillgänglig för gtkmm " "på Microsoft Windows, men i skrivande stund (oktober 2020) har den inte " "uppdaterats på länge. Var medveten om att även om det vanligen är lugnt att " "blanda byggen som gjorts med Visual Studio 2017 och 2019, så gör inte det " "när du bygger gtkmm med dess -mm-beroenden." #. (itstool) path: appendix/para #: C/index-in.docbook:9561 msgid "" "Refer to the README.win32, as well as the README files in the gtkmm, " "pangomm and glibmm for instructions on how to build gtkmm on Windows." msgstr "" "Se README.win32 såväl som README-" "filerna i gtkmm, pangomm och glibmm för " "instruktioner om hur du bygger gtkmm på Windows." #. (itstool) path: appendix/title #: C/index-in.docbook:9568 msgid "Working with gtkmm's Source Code" msgstr "Arbeta med gtkmm:s källkod" #. (itstool) path: appendix/para #: C/index-in.docbook:9569 #, fuzzy msgid "" "If you are interested in helping out with the development of " "gtkmm, or fixing a bug in gtkmm, you'll probably need to build the development version of " "gtkmm. However, you should not install a " "development version over your stable version. Instead, you should install it " "alongside your existing gtkmm installation, in a " "separate path." msgstr "" "Om du är intresserad i att hjälpa till med utvecklingen av " "gtkmm eller vill fixa ett fel gtkmm, kommer du troligen behöva bygga utvecklingsversionen av " "gtkmm. Du bör dock inte installera en " "utvecklingsversion över din stabila version. I stället bör du installera den " "vid sidan om din befintliga gtkmm-installation i " "en separat sökväg." #. (itstool) path: appendix/para #: C/index-in.docbook:9576 #, fuzzy msgid "" "The easiest way to do this is using jhbuild. jhbuild is " "a program that makes building GNOME software much easier by calculating " "dependencies and building things in the correct order. This section will " "give a brief explanation of how to set up jhbuild " "to build and install gtkmm from the source " "repository (git). For up-to-date information on jhbuild, please refer to the jhbuild manual." msgstr "" "Det enklaste sättet att göra detta är att använda jhbuild. jhbuild är ett program som gör det mycket enklare att bygga GNOME-" "programvara genom att beräkna beroenden och bygga saker i rätt ordning. " "Detta avsnitt kommer kort förklara hur jhbuild " "kan konfigureras för att bygga och installera gtkmm från källarkivet (git). För uppdaterad information om " "jhbuild, se handboken för jhbuild." #. (itstool) path: note/para #: C/index-in.docbook:9586 #, fuzzy msgid "" "Note that to build gtkmm from git, you'll often " "need to build many of its dependencies from git as well. " "jhbuild makes this easier than it would normally " "be, but it will take quite a while to build and install them all. You will " "probably encounter build problems, though these will usually be corrected " "quickly if you report them." msgstr "" "Observera att för att bygga gtkmm från git " "behöver du ofta även bygga många av dess beroenden från git. " "jhbuild gör detta lättare än det vanligen skulle " "vara, men det kommer ta ett bra tag att bygga och installera dem alla. Du " "kommer troligen stöta på byggproblem, men dessa brukar vanligen rättas till " "snabbt om du rapporterar dem." #. (itstool) path: appendix/para #: C/index-in.docbook:9594 msgid "" "gnome-build-meta is an alternative to " "jhbuild. It is described at the Building " "system components wiki page, but here we concentrate on " "jhbuild." msgstr "" "gnome-build-meta är ett alternativ till " "jhbuild. Det beskrivs på wikisidan Bygga " "systemkomponenter, men här koncentrerar vi oss på " "jhbuild." #. (itstool) path: section/title #: C/index-in.docbook:9601 msgid "Setting up jhbuild" msgstr "Konfigurera jhbuild" #. (itstool) path: para/screen #: C/index-in.docbook:9610 #, no-wrap msgid "$ cp examples/sample.jhbuildrc ~/.config/jhbuildrc" msgstr "$ cp examples/sample.jhbuildrc ~/.config/jhbuildrc" #. (itstool) path: section/para #: C/index-in.docbook:9603 #, fuzzy msgid "" "To set up jhbuild, follow the basic installation " "instructions from the jhbuild manual. After you have installed " "jhbuild, you should copy the sample " "jhbuild configuration file into your home " "directory by executing the following command from the jhbuild directory: <_:screen-1/>" msgstr "" "Följ de grundläggande installationsinstruktionerna från handboken för " "jhbuild för att konfigurera jhbuild. Efter " "att du har installerat jhbuild bör du kopiera " "jhbuild-exempelkonfigurationsfilen till din " "hemkatalog genom att exekvera följande kommando från katalogen " "jhbuild: <_:screen-1/>" #. (itstool) path: section/para #: C/index-in.docbook:9612 msgid "" "The gtkmm module is defined in the " "gnome-suites-core-deps-latest.modules moduleset. So " "edit your jhbuildrc file and set your moduleset setting " "like so:" msgstr "" "gtkmm-modulen definieras i moduluppsättningen " "gnome-suites-core-deps-latest.modules. Så redigera din " "jhbuildrc-fil och ställ in din moduleset-inställning så " "här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9617 #, no-wrap msgid "moduleset = 'gnome-suites-core-deps-latest'" msgstr "moduleset = 'gnome-suites-core-deps-latest'" #. (itstool) path: section/para #: C/index-in.docbook:9618 #, fuzzy msgid "" "After setting the correct moduleset, you need to tell jhbuild which module or modules to build. To build gtkmm and all of its dependencies, set modules " "like so:" msgstr "" "Efter att ha ställt in rätt moduluppsättning behöver du säga till " "jhbuild vilken eller vilka moduler som ska " "byggas. För att bygga gtkmm och alla dess " "beroenden ställer du in modules så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9624 #, no-wrap msgid "modules = [ 'gtkmm' ]" msgstr "modules = [ 'gtkmm' ]" #. (itstool) path: section/para #: C/index-in.docbook:9625 #, fuzzy msgid "" "You can build several modules by setting the modules " "variable to a meta-package, e.g. meta-gnome-core, or " "listing more than one module name. The modules variable " "specifies which modules will be built when you don't explicitly specify " "anything on the command line. You can always build a different moduleset " "later by specifying it on the commandline (e.g. jhbuild build " "gtkmm)." msgstr "" "Du kan bygga flera moduler genom att ställa in variabeln modules till ett metapaket, t.ex. meta-gnome-core, eller " "genom att lista mer än ett modulnamn. Variabeln modules " "anger vilka moduler som kommer byggas när du inte explicit anger något på " "kommandoraden. Du kan alltid bygga en annan moduluppsättning senare genom " "att ange den på kommandoraden (t.ex. jhbuild build gtkmm)." #. (itstool) path: important/title #: C/index-in.docbook:9635 msgid "Setting a prefix" msgstr "Sätta ett prefix" #. (itstool) path: important/para #: C/index-in.docbook:9636 #, fuzzy msgid "" "By default, jhbuild's configuration is configured " "to install all software built with jhbuild under " "the ~/jhbuild/install prefix. You can choose a " "different prefix, but it is recommended that you keep this prefix different " "from other software that you've installed (don't set it to /usr!) If you've followed the jhbuild instructions then this prefix " "belongs to your user, so you don't need to run jhbuild as root." msgstr "" "Som standard är jhbuilds konfiguration " "konfigurerad för att installera all programvara som byggts med " "jhbuild under prefixet ~/jhbuild/" "install. Du kan välja ett annat prefix, men det rekommenderas att " "du behåller detta prefix skilt från annan programvara som du har installerat " "(sätt det inte till /usr!) Om du har följt jhbuild-" "instruktionerna så hör detta prefix till din användare, så du behöver inte " "köra jhbuild som root." #. (itstool) path: section/para #: C/index-in.docbook:9648 #, fuzzy msgid "" "You should also set buildroot in jhbuildrc. jhbuild builds gtkmm and many of its dependencies with Meson. Meson does not allow " "building in the source tree. jhbuild's default " "action is to build in a build directory directly below " "the source root directory. Some modules have a build " "directory with files used when building with Autotools. Those files can be " "destroyed if you let jhbuild build in that " "directory." msgstr "" "Du bör även ställa in buildroot i jhbuildrc. jhbuild bygger gtkmm och många av dess beroenden med Meson. Meson tillåter inte " "bygge i källträdet. jhbuilds standardåtgärd är " "att bygga i en build-katalog just under källans " "rotkatalog. Vissa moduler har en build-katalog med " "filer som används vid bygge med Autotools. Dessa filer kan förstöras om du " "låter jhbuild bygga i den katalogen." #. (itstool) path: section/para #: C/index-in.docbook:9658 msgid "" "When you downloaded jhbuild from the git " "repository, you got a number of .modules files, " "specifying dependencies between modules. By default jhbuild does not use the downloaded versions of these files, but reads " "the latest versions in the git repository. This is usually what you want. If " "you don't want it, use the use_local_modulesets variable " "in jhbuildrc." msgstr "" "När du hämtade jhbuild från git-arkivet fick du " "ett antal .modules-filer som anger beroenden mellan " "moduler. Som standard använder jhbuild inte de " "hämtade versionerna av dessa filer, utan läser de senaste versionerna i git-" "arkivet. Detta är vanligen vad du vill. Om du inte vill det använder du " "variabeln use_local_modulesets i jhbuildrc." #. (itstool) path: section/title #: C/index-in.docbook:9669 msgid "" "Installing and Using the git version of gtkmm" msgstr "" "Installera och använda git-versionen av gtkmm" #. (itstool) path: para/screen #: C/index-in.docbook:9678 #, no-wrap msgid "" "$ jhbuild bootstrap\n" "$ jhbuild sanitycheck" msgstr "" "$ jhbuild bootstrap\n" "$ jhbuild sanitycheck" #. (itstool) path: section/para #: C/index-in.docbook:9671 #, fuzzy msgid "" "Once you've configured jhbuild as described " "above, building gtkmm should be relatively " "straightforward. The first time you run jhbuild, " "you should run the following sequence of commands to ensure that " "jhbuild has the required tools and verify that it " "is set up correctly: <_:screen-1/>" msgstr "" "När du konfigurerat jhbuild som beskrivet ovan " "bör det vara relativt okomplicerat att bygga gtkmm. Den första gången du kör jhbuild " "bör du köra följande sekvens kommandon för att säkerställa att " "jhbuild har verktygen som krävs och bekräfta att " "det konfigurerats riktigt: <_:screen-1/>" #. (itstool) path: section/title #: C/index-in.docbook:9682 msgid "" "Installing gtkmm with jhbuild" msgstr "" "Installera gtkmm med jhbuild" #. (itstool) path: section/para #: C/index-in.docbook:9684 msgid "" "If everything worked correctly, you should be able to build " "gtkmm and all of its dependencies from git by " "executing jhbuild build (or, if you didn't specify " "gtkmm in the modules variable, " "with the command jhbuild build gtkmm)." msgstr "" "Om allt fungerade korrekt bör du kunna bygga gtkmm och alla dess beroenden från git genom att köra " "jhbuild build (eller, om du inte angav " "gtkmm i variabeln modules, med " "kommandot jhbuild build gtkmm)." #. (itstool) path: section/para #: C/index-in.docbook:9691 #, fuzzy msgid "" "This command will build and install a series of modules and will probably " "take quite a long time the first time through. After the first time, " "however, it should go quite a bit faster since it only needs to rebuild " "files that changed since the last build. Alternatively, after you've built " "and installed gtkmm the first time, you can " "rebuild gtkmm by itself (without rebuilding all " "of its dependencies) with the command jhbuild buildone gtkmm." msgstr "" "Detta kommando kommer bygga och installera en serie moduler och kommer " "troligen ta ganska lång tid den första gången. Efter den första gången bör " "det dock gå ganska mycket snabbare då det bara behöver bygga om filer som " "ändrats sedan det senaste bygget. Alternativt kan du efter du byggt och " "installerat gtkmm för första gången, nu bygga om " "endast gtkmm (utan att bygga alla dess beroenden " "på nytt) med kommandot jhbuild buildone gtkmm." #. (itstool) path: section/title #: C/index-in.docbook:9702 msgid "Using the git version of gtkmm" msgstr "Använda git-versionen av gtkmm" #. (itstool) path: section/para #: C/index-in.docbook:9704 #, fuzzy msgid "" "After you've installed the git version of gtkmm, " "you're ready to start using and experimenting with it. In order to use the " "new version of gtkmm you've just installed, you " "need to set some environment variables so that your configure or meson.build script knows where to find the " "new libraries. Fortunately, jhbuild offers an " "easy solution to this problem. Executing the command jhbuild shell will start a new shell with all of the correct environment " "variables set. Now if you re-configure and build your project just as you " "usually do, it should link against the newly installed libraries. To return " "to your previous environment, simply exit the jhbuild shell." msgstr "" "Efter att du installerat git-versionen an gtkmm " "är du redo att börja använda och experimentera med det. För att använda den " "nya gtkmm-version som du just installerats " "behöver du ställa in några miljövariabler så att ditt configure- eller meson.build-skript vet var de kan " "hitta de nya biblioteken. Turligt nog erbjuder jhbuild en lätt lösning på detta problem. Att exekvera kommandot " "jhbuild shell kommer starta ett nytt skal med alla " "miljövariabler rätt inställda. Om du nu konfigurerar om och bygger ditt " "projekt som du brukar göra, så ska det helt enkelt länka mot de nyss " "installerade biblioteken. För att returnera till din tidigare miljö stänger " "du helt enkelt jhbuild-skalet." #. (itstool) path: section/para #: C/index-in.docbook:9718 #, fuzzy msgid "" "Once you've built your software, you'll need to run your program within the " "jhbuild environment as well. To do this, you can again use the " "jhbuild shell command to start a new shell with the " "jhbuild environment set up. Alternatively, you " "can execute a one-off command in the jhbuild " "environment using the following command: jhbuild run command-name. In this case, the command will be run with the correct environment " "variables set, but will return to your previous environment after the " "program exits." msgstr "" "När du har byggt din programvara kommer du behöva köra ditt program även i " "jhbuild-miljön. För att göra detta kan du åter igen använda kommandot " "jhbuild shell för att starta ett nytt skal med " "jhbuild-miljön konfigurerad. Alternativt kan du " "exekvera ett ensamt kommando i jhbuild-miljön med " "följande kommando: jhbuild run command-name. I detta fall " "kommer kommandot köras med rätt miljövariabler inställda, men kommer " "returnera till din föregående miljö efter programmet avslutas." #. (itstool) path: appendix/title #: C/index-in.docbook:9735 #, fuzzy msgid "Wrapping C Libraries with gmmproc" msgstr "Omsluta C-bibliotek med gmmproc" #. (itstool) path: appendix/para #: C/index-in.docbook:9737 #, fuzzy msgid "" "gtkmm uses the gmmproc tool to " "generate most of its source code, using .defs files that define the APIs of " "GObject-based libraries. So it's quite easy to create " "additional gtkmm-style wrappers of other glib/GObject-based libraries." msgstr "" "gtkmm använder verktyget gmmproc för att generera det mesta av sin källkod, med .defs-filer som " "definierar API:erna för GObject-baserade bibliotek. " "Så det är ganska lätt att skapa ytterligare omslag i gtkmm-stil för andra " "glib/GObject-baserade bibliotek." #. (itstool) path: appendix/para #: C/index-in.docbook:9742 #, fuzzy msgid "" "This involves a variety of tools, some of them crufty, but at least they " "work, and has been used successfully by several projects." msgstr "" "Detta involverar en uppsjö verktyg, vissa av dem knepiga, men i alla fall " "fungerande, och har framgångsrikt använts av flera projekt." #. (itstool) path: section/title #: C/index-in.docbook:9747 msgid "The build structure" msgstr "Byggstrukturen" #. (itstool) path: section/para #: C/index-in.docbook:9749 #, fuzzy msgid "" "Generation of the source code for a gtkmm-style wrapper API requires use of " "tools such as gmmproc and generate_wrap_init." "pl, which are included in glibmm. In " "theory you could write your own build files to use these appropriately, but " "a much better option is to make use of the build infrastructure provided by " "the mm-common module. To get started, it helps a " "lot to pick an existing binding module as an example to look at." msgstr "" "Generering av källkoden för ett omslags-API av gtkmm-stil kräver användning " "av verktyg som gmmproc och generate_wrap_init." "pl som är inkluderade i glibmm. I " "teorin skulle du kunna skriva dina egna byggfiler för att lämpligt använda " "dessa, men ett mycket bättre alternativ är att använda bygginfrastrukturen " "som tillhandahålls av modulen mm-common. För att " "komma igång hjälper det mycket att välja en befintlig bindningsmodul som ett " "exempel att titta på." #. (itstool) path: section/para #: C/index-in.docbook:9757 #, fuzzy msgid "" "For instance, let's pretend that we are wrapping a C library called " "libsomething. It provides a GObject-based API with " "types named, for instance, SomeWidget and " "SomeStuff." msgstr "" "Låt oss exempelvis föreställa oss att vi omsluter ett C-bibliotek med namnet " "libsomething. Det tillhandahåller ett GObject-baserat " "API med typer som exempelvis har namnen SomeWidget " "och SomeStuff." #. (itstool) path: section/title #: C/index-in.docbook:9763 msgid "Copying the skeleton project" msgstr "Kopiera skelettprojektet" #. (itstool) path: section/para #: C/index-in.docbook:9765 #, fuzzy msgid "" "Typically our wrapper library would be called libsomethingmm. We can start " "by copying the skeleton source tree from the " "mm-common module. Starting with mm-" "common 1.0.0 this skeleton application is built with the Meson build system." msgstr "" "Typiskt skulle vårt omslagsbibliotek kallas något i stil med libsomethingmm. " "Vi kan börja med att kopiera skelettkällkodsträdet från " "modulen mm-common. Från och med mm-" "common 1.0.0 byggs detta skelettprogram med byggsystemet Meson." #. (itstool) path: section/programlisting #: C/index-in.docbook:9771 #, no-wrap msgid "" "\n" " $ git clone https://gitlab.gnome.org/GNOME/mm-common.git\n" " $ cp -a mm-common/skeletonmm libsomethingmm\n" msgstr "" "\n" " $ git clone https://gitlab.gnome.org/GNOME/mm-common.git\n" " $ cp -a mm-common/skeletonmm libsomethingmm\n" #. (itstool) path: listitem/para #: C/index-in.docbook:9780 msgid "libsomethingmm: The top-level directory." msgstr "libsomethingmm: Toppnivåkatalogen." #. (itstool) path: listitem/para #: C/index-in.docbook:9782 #, fuzzy msgid "" "libsomething: Contains the main include file and the " "pkg-config .pc file." msgstr "" "libsomething: Innehåller huvudinkluderingsfilen och .pc-" "filen för pkg-config." #. (itstool) path: listitem/para #: C/index-in.docbook:9784 msgid "src: Contains .hg and .ccg source files." msgstr "src: Innehåller .hg- och .ccg-källfiler." #. (itstool) path: listitem/para #: C/index-in.docbook:9785 msgid "" "libsomethingmm: Contains hand-written .h and .cc files." msgstr "" "libsomethingmm: Innehåller handskrivna .h- och .cc-" "filer." #. (itstool) path: section/para #: C/index-in.docbook:9775 #, fuzzy msgid "" "This provides a directory structure for the source .hg and .ccg files and " "the hand-written .h and .cc files, with meson.build " "files that can specify the various files in use, in terms of Meson " "variables. The directory structure usually looks like this, after we have " "renamed the directories appropriately: <_:itemizedlist-1/>" msgstr "" "Detta tillhandahåller en katalogstruktur för .hg- och .ccg-källfilerna och " "de handskrivna .h- och .cc-filerna, med meson.build-" "filer som kan ange de olika filerna som används i termer av Meson-variabler. " "Katalogstrukturen ser vanligen ut så här efter vi bytt namn på katalogerna " "på lämpligt sätt: <_:itemizedlist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:9794 #, fuzzy msgid "" "As well as renaming the directories, we should rename some of the source " "files. For instance:" msgstr "" "Såväl som att byta namn på katalogerna så bör vi byta namn på några av " "källfilerna. Till exempel: <_:programlisting-1/> Ett antal av skelettfilerna " "måste fortfarande fyllas i med projektspecifikt innehåll senare." #. (itstool) path: section/programlisting #: C/index-in.docbook:9796 #, no-wrap msgid "" "\n" "$ for f in $(find libsomethingmm -depth -name '*skeleton*'); do \\\n" " d=\"${f%/*}\"; b=\"${f##*/}\"; mv \"$f\" \"$d/${b//skeleton/libsomething}\"; \\\n" " done\n" msgstr "" "\n" "$ for f in $(find libsomethingmm -depth -name '*skeleton*'); do \\\n" " d=\"${f%/*}\"; b=\"${f##*/}\"; mv \"$f\" \"$d/${b//skeleton/libsomething}\"; \\\n" " done\n" #. (itstool) path: section/para #: C/index-in.docbook:9801 #, fuzzy msgid "" "A number of the skeleton files must still be filled in with project-specific " "content later." msgstr "" "Såväl som att byta namn på katalogerna så bör vi byta namn på några av " "källfilerna. Till exempel: <_:programlisting-1/> Ett antal av skelettfilerna " "måste fortfarande fyllas i med projektspecifikt innehåll senare." #. (itstool) path: section/para #: C/index-in.docbook:9803 #, fuzzy msgid "" "Note that files ending in .in will be used to generate " "files with the same name but without the .in suffix, by " "replacing some variables with actual values during the configure stage." msgstr "" "Observera att filer som slutar med .in kommer användas " "för att generera filer med samma namn men utan ändelsen .in, genom att ersätta några variabler med faktiska värden under " "konfigurationssteget." #. (itstool) path: section/para #: C/index-in.docbook:9806 #, fuzzy msgid "" "Generated files are saved in the build tree, which is separated from the " "source tree when meson and ninja are " "used." msgstr "" "Genererade filer sparas i byggträdet, vilket separeras från källträdet när " "meson och ninja används." #. (itstool) path: section/title #: C/index-in.docbook:9811 msgid "Modifying build files" msgstr "Modifiera byggfiler" #. (itstool) path: section/para #: C/index-in.docbook:9813 #, fuzzy msgid "" "Now we edit the files to adapt them to our needs. You might prefer to use a " "multiple-file search-replace utility for this, such as regexxer. Note that nearly all of the files provided with the skeleton " "source tree contain placeholder text. Thus, the substitutions should be " "performed globally, and not be limited to the Meson files." msgstr "" "Nu redigerar vi filerna för att anpassa dem till våra behöv. Du kan föredra " "att använda ett sök-och-ersätt-verktyg för flera filer för detta, som " "regexxer. Observera att nästan alla filerna som " "tillhandahålls med skelettkällträdet innehåller platshållartext. Därmed bör " "ersättningarna utföras globalt, och inte begränsas till Meson-filerna." #. (itstool) path: section/para #: C/index-in.docbook:9817 #, fuzzy msgid "" "All mentions of skeleton should be replaced by the " "correct name of the C library you are wrapping, such as \"something\" or " "\"libsomething\". In the same manner, all instances of SKELETON should be replaced by \"SOMETHING\" or \"LIBSOMETHING\", and all " "occurrences of Skeleton changed to \"Something\"." msgstr "" "Alla omnämnanden av skeleton bör ersättas med rätt namn " "för C-biblioteket som du omsluter, som ”something” eller ”libsomething”. På " "samma sätt bör alla instanser av SKELETON ersättas med " "”SOMETHING” eller ”LIBSOMETHING”, och alla förekomster av Skeleton ändras till ”Something”." #. (itstool) path: section/para #: C/index-in.docbook:9821 #, fuzzy msgid "" "Likewise, replace all instances of Joe Hacker by the name " "of the intended copyright holder, which is probably you. Do the same for the " "joe@example.com email address." msgstr "" "Ersätt på samma sätt alla förekomster av Joe Hacker med " "namnet på den tänka upphovsrättsinnehavaren, vilken troligen är du. Gör " "samma sak för e-postadressen joe@example.com." #. (itstool) path: section/title #: C/index-in.docbook:9826 msgid "meson.build in the top-level directory" msgstr "meson.build i toppnivåkatalogen" #. (itstool) path: listitem/para #: C/index-in.docbook:9830 #, fuzzy msgid "" "It is common for binding modules to track the version number of the library " "they are wrapping. So, for instance, if the C library is at version 1.23.4, " "then the initial version of the binding module would be 1.23.0. However, " "avoid starting with an even minor version number as that usually indicates a " "stable release." msgstr "" "Det är vanligt för bindningsmoduler att följa versionsnumret för biblioteket " "de omsluter. Så om exempelvis C-biblioteket är på version 1.23.4 så skulle " "den första versionen av bindningsmodulen vara 1.23.0. Undvik dock att starta " "med ett jämnt versionsnummer för mindre version då det vanligen indikerar en " "stabil utgåva." #. (itstool) path: listitem/para #: C/index-in.docbook:9835 msgid "" "In the project() function, change the license and the C+" "+ version, if necessary." msgstr "" "Ändra licensen och C++-versionen i project()-funktionen " "om det behövs." #. (itstool) path: listitem/para #: C/index-in.docbook:9837 #, fuzzy msgid "" "You probably need to add more required modules than glibmm and skeleton " "(libsomething)." msgstr "" "Du behöver troligen lägga till fler moduler som krävs än " "glibmm och skeleton " "(libsomething)." #. (itstool) path: section/title #: C/index-in.docbook:9845 msgid "Other meson.build files" msgstr "Andra meson.build-filer" #. (itstool) path: listitem/para #: C/index-in.docbook:9849 #, fuzzy msgid "" "skeleton/meson.build: Perhaps not much to change here " "more than the global name substitutions." msgstr "" "skeleton/meson.build: Kanske inte mycket att ändra här " "förutom de globala namnsubstitutionerna." #. (itstool) path: listitem/para #: C/index-in.docbook:9852 msgid "skeleton/skeletonmm/meson.build" msgstr "skeleton/skeletonmm/meson.build" #. (itstool) path: varlistentry/term #: C/index-in.docbook:9855 #, fuzzy msgid "defs_basefiles" msgstr "defs_basefiles" #. (itstool) path: listitem/para #: C/index-in.docbook:9856 msgid "If we have more .defs and docs.xml files, we add them here." msgstr "Om vi har fler .defs- och docs.xml-filer så lägger vi till dem här." #. (itstool) path: varlistentry/term #: C/index-in.docbook:9860 #, fuzzy msgid "hg_ccg_basenames" msgstr "hg_ccg_basenames" #. (itstool) path: listitem/para #: C/index-in.docbook:9861 msgid "" "We must mention all of our .hg and .ccg files here." msgstr "" "Vi måste nämna alla våra .hg- och .ccg-filer här." #. (itstool) path: varlistentry/term #: C/index-in.docbook:9865 #, fuzzy msgid "extra_cc_files, extra_h_files" msgstr "extra_cc_files, extra_h_files" #. (itstool) path: listitem/para #: C/index-in.docbook:9866 #, fuzzy msgid "" "Any additional hand-written .h and .cc source files go here." msgstr "" "Alla ytterligare handskrivna .h- och .cc-källkodsfiler hamnar här." #. (itstool) path: section/para #: C/index-in.docbook:9847 #, fuzzy msgid "" "Next we must adapt the other meson.build files: <_:" "itemizedlist-1/>" msgstr "" "Härnäst måste vi anpassa de andra meson.build-filerna: " "<_:itemizedlist-1/>" #. (itstool) path: section/title #: C/index-in.docbook:9876 msgid "Creating .hg and .ccg files" msgstr "Skapa .hg- och .ccg-filer" #. (itstool) path: section/para #: C/index-in.docbook:9878 #, fuzzy msgid "" "We should now create our first .hg and .ccg files, to wrap one of the objects in the C library. One pair of " "example source files already exists: skeleton.ccg and " "skeleton.hg. Create copies of these files as necessary." msgstr "" "Vi ska nu skapa våra första .hg- och .ccg-filer för att omsluta ett av objekten i C-biblioteket. Ett par av " "exempelkällkodsfiler finns redan: skeleton.ccg och " "skeleton.hg. Skapa kopior av dessa filer efter behov." #. (itstool) path: section/para #: C/index-in.docbook:9882 msgid "" "In the .hg and .ccg files " "section you can learn about the syntax used in these files." msgstr "" "I avsnittet .hg- och .ccg-filer kan du lära dig om syntaxen som används i dessa filer." #. (itstool) path: section/title #: C/index-in.docbook:9889 msgid "Generating the .defs files." msgstr "Generera .defs-filerna." #. (itstool) path: listitem/para #: C/index-in.docbook:9894 #, fuzzy msgid "objects (GObjects, widgets, interfaces, boxed-types and plain structs)" msgstr "" "objekt (GObject, komponenter, gränssnitt, boxed-type och vanliga structar)" #. (itstool) path: listitem/para #: C/index-in.docbook:9895 msgid "functions" msgstr "funktioner" #. (itstool) path: listitem/para #: C/index-in.docbook:9896 #, fuzzy msgid "enums" msgstr "uppräkningar" #. (itstool) path: listitem/para #: C/index-in.docbook:9897 msgid "signals" msgstr "signaler" #. (itstool) path: listitem/para #: C/index-in.docbook:9898 msgid "properties" msgstr "egenskaper" #. (itstool) path: listitem/para #: C/index-in.docbook:9899 #, fuzzy msgid "vfuncs" msgstr "vfunc-funktioner" #. (itstool) path: section/para #: C/index-in.docbook:9891 msgid "" "The .defs files are text files, in a lisp format, that " "describe the API of a C library, including its <_:itemizedlist-1/>" msgstr "" ".defs-filerna är textfiler i ett lisp-format som " "beskriver API:t för ett C-bibliotek, inklusive dess <_:itemizedlist-1/>" #. (itstool) path: varlistentry/term #: C/index-in.docbook:9908 msgid "gtk.defs" msgstr "gtk.defs" #. (itstool) path: listitem/para #: C/index-in.docbook:9909 msgid "Includes the other files." msgstr "Inkluderar de andra filerna." #. (itstool) path: varlistentry/term #: C/index-in.docbook:9912 msgid "gtk_methods.defs" msgstr "gtk_methods.defs" #. (itstool) path: listitem/para #: C/index-in.docbook:9913 msgid "Objects and functions." msgstr "Objekt och funktioner." #. (itstool) path: varlistentry/term #: C/index-in.docbook:9916 msgid "gtk_enums.defs" msgstr "gtk_enums.defs" #. (itstool) path: listitem/para #: C/index-in.docbook:9917 #, fuzzy msgid "Enumerations." msgstr "Uppräkningar." #. (itstool) path: varlistentry/term #: C/index-in.docbook:9920 msgid "gtk_signals.defs" msgstr "gtk_signals.defs" #. (itstool) path: listitem/para #: C/index-in.docbook:9921 msgid "Signals and properties." msgstr "Signaler och egenskaper." #. (itstool) path: varlistentry/term #: C/index-in.docbook:9924 msgid "gtk_vfuncs.defs" msgstr "gtk_vfuncs.defs" #. (itstool) path: listitem/para #: C/index-in.docbook:9925 #, fuzzy msgid "vfuncs (function pointer member fields in structs), written by hand." msgstr "vfunc (medlemsfält för funktionspekare i structar), handskrivna." #. (itstool) path: section/para #: C/index-in.docbook:9902 msgid "" "At the moment, we have separate tools for generating different parts of " "these .defs, so we split them up into separate files. " "For instance, in the gtk/src directory of the " "gtkmm sources, you will find these files: <_:" "variablelist-1/>" msgstr "" "För tillfället har vi olika verktyg för att generera olika delar av dessa " ".defs, så vi delar upp dem i separata filer. I " "gtk/src-katalogen för gtkmm-" "källkoden kommer du exempelvis hitta dessa filer: <_:variablelist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:9929 #, fuzzy msgid "" "The skeletonmm/tools/generate_defs_and_docs.sh script " "generates all .defs files and the *_docs.xml file, described in the Documentation section." msgstr "" "Skriptet skeletonmm/tools/generate_defs_and_docs.sh " "genererar alla .defs-filer och *_docs.xml-filen, beskriven i avsnittet Dokumentation." #. (itstool) path: section/title #: C/index-in.docbook:9935 #, fuzzy msgid "Generating the methods .defs" msgstr "Generera .defs för metoderna" #. (itstool) path: section/para #: C/index-in.docbook:9937 msgid "" "This .defs file describes objects and their functions. " "It is generated by the h2def.py script which you can find " "in glibmm's tools/defs_gen directory. For instance," msgstr "" "Denna .defs-fil beskriver objekt och deras funktioner. " "Den genereras av h2def.py-skriptet som du kan hitta i " "glibmm:s tools/defs_gen-katalog. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:9941 #, no-wrap msgid "" "\n" "$ ./h2def.py /usr/include/gtk-4.0/gtk/*.h > gtk_methods.defs\n" msgstr "" "\n" "$ ./h2def.py /usr/include/gtk-4.0/gtk/*.h > gtk_methods.defs\n" #. (itstool) path: section/title #: C/index-in.docbook:9947 #, fuzzy msgid "Generating the enums .defs" msgstr "Generera .defs för enumerationerna" #. (itstool) path: section/para #: C/index-in.docbook:9949 #, fuzzy msgid "" "This .defs file describes enum types and their possible " "values. It is generated by the enumextract.py script " "which you can also find in glibmm's tools/defs_gen " "directory. For instance," msgstr "" "Denna .defs-fil beskriver uppräkningstyper och deras " "möjliga värden. Den genereras av enumextract.py-" "skriptet som du också kan hitta i glibmm:s tools/defs_gen-katalog. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:9953 #, no-wrap msgid "" "\n" "$ ./enumextract.py /usr/include/gtk-4.0/gtk/*.h > gtk_enums.defs\n" msgstr "" "\n" "$ ./enumextract.py /usr/include/gtk-4.0/gtk/*.h > gtk_enums.defs\n" #. (itstool) path: section/title #: C/index-in.docbook:9959 #, fuzzy msgid "Generating the signals and properties .defs" msgstr "Generera .defs för signalerna och egenskaperna" #. (itstool) path: section/para #: C/index-in.docbook:9961 #, fuzzy msgid "" "This .defs file describes signals and properties. It is " "generated by the special generate_extra_defs utility " "that is in every wrapping project, such as gtkmm/tools/" "extra_defs_gen/. For instance" msgstr "" "Denna .defs-fil beskriver signaler och egenskaper. Den " "genereras av den speciella verktyget generate_extra_defs som finns i varje omslagsprojekt, som gtkmm/tools/" "extra_defs_gen/. Till exempel" #. (itstool) path: section/programlisting #: C/index-in.docbook:9966 #, no-wrap msgid "" "\n" "$ cd tools/extra_defs_gen\n" "$ ./generate_extra_defs > gtk_signals.defs\n" msgstr "" "\n" "$ cd tools/extra_defs_gen\n" "$ ./generate_extra_defs > gtk_signals.defs\n" #. (itstool) path: section/para #: C/index-in.docbook:9970 #, fuzzy msgid "" "You must edit the source code of your own generate_extra_defs tool in order to generate the .defs for the " "GObject C types that you wish to wrap. In the skeleton source tree, the " "source file is named tools/extra_defs_gen/generate_defs_skeleton." "cc. If not done so already, the file should be renamed, with the " "basename of your new binding substituted for the skeleton " "placeholder. The tools/extra_defs_gen/meson.build file " "should also mention the new source filename." msgstr "" "Du måste redigera källkoden för ditt eget generate_extra_defs-verktyg för att generera .defs-filen för " "GObject C-typerna som du vill omsluta. I skelettkällkodsträdet har källfilen " "namnet tools/extra_defs_gen/generate_defs_skeleton.cc. " "Om så inte redan gjorts ska filens namn bytas, så att basnamnet för din nya " "bindning ersätter platshållaren skeleton. Filen " "tools/extra_defs_gen/meson.build ska också nämna det " "nya källfilnamnet." #. (itstool) path: section/para #: C/index-in.docbook:9977 #, fuzzy msgid "" "Then edit the .cc file to specify the correct types. " "For instance, your main() function might look like this:" msgstr "" "Redigera sedan .cc-filen för att ange rätt typer. Till " "exempel kan din main()-funktion se ut så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:9980 #, no-wrap msgid "" "\n" "#include <glibmm_generate_extra_defs/generate_extra_defs.h>\n" "#include <libsomething.h>\n" "#include <iostream>\n" "\n" "int main(int, char**)\n" "{\n" " something_init();\n" "\n" " std::cout << get_defs(SOME_TYPE_WIDGET)\n" " << get_defs(SOME_TYPE_STUFF);\n" " return 0;\n" "}\n" msgstr "" "\n" "#include <glibmm_generate_extra_defs/generate_extra_defs.h>\n" "#include <libsomething.h>\n" "#include <iostream>\n" "\n" "int main(int, char**)\n" "{\n" " something_init();\n" "\n" " std::cout << get_defs(SOME_TYPE_WIDGET)\n" " << get_defs(SOME_TYPE_STUFF);\n" " return 0;\n" "}\n" #. (itstool) path: section/title #: C/index-in.docbook:9997 #, fuzzy msgid "Writing the vfuncs .defs" msgstr "Skriva .defs-filer för vfunc" #. (itstool) path: section/para #: C/index-in.docbook:9999 #, fuzzy msgid "" "This .defs file describes virtual functions (vfuncs). " "It must be written by hand. There is the skeleton file skeleton/" "src/skeleton_vfunc.defs to start from. You can also look at " "gtkmm's gtk/src/gtk_vfuncs.defs file." msgstr "" "Denna .defs-fil beskriver virtuella funktioner (vfunc). " "Den måste skrivas för hand. Det finns en skelettfil skeleton/src/" "skeleton_vfunc.defs att börja från. Du kan också titta på " "gtkmm:s fil gtk/src/gtk_vfuncs.defs." #. (itstool) path: section/title #: C/index-in.docbook:10010 msgid "The .hg and .ccg files" msgstr ".hg- och .ccg-filerna" #. (itstool) path: section/para #: C/index-in.docbook:10011 #, fuzzy msgid "" "The .hg and .ccg source files are very much like .h and .cc C++ source " "files, but they contain extra macros, such as _CLASS_GOBJECT() and _WRAP_METHOD(), from which " "gmmproc generates appropriate C++ source code, usually at " "the same position in the header. Any additional C++ source code will be " "copied verbatim into the corresponding .h or .cc file." msgstr "" ".hg- och .ccg-källfilerna är mycket som .h and .cc-källfiler i C++, men de " "innehåller extra makron som _CLASS_GOBJECT() och " "_WRAP_METHOD() från vilka gmmproc " "genererar lämplig C++-källkod, vanligen på samma plats i huvudet. All " "ytterligare C++-källkod kommer kopieras som den är i motsvarande .h- eller ." "cc-fil." #. (itstool) path: section/para #: C/index-in.docbook:10019 #, fuzzy msgid "" "A .hg file will typically include some headers and then declare a class, " "using some macros to add API or behavior to this class. For instance, " "gtkmm's button.hg looks " "roughly like this:" msgstr "" "En .hg-fil kommer typiskt inkludera några huvuden och sedan deklarera en " "klass, men några makron för att lägga till API eller beteende till denna " "klass. Exempelvis ser gtkmms button.hg ut ungefär så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10024 #, no-wrap msgid "" "\n" "#include <gtkmm/widget.h>\n" "#include <gtkmm/actionable.h>\n" "_DEFS(gtkmm,gtk)\n" "_PINCLUDE(gtkmm/private/widget_p.h)\n" "\n" "namespace Gtk\n" "{\n" "\n" "class Button\n" " : public Widget,\n" " public Actionable\n" "{\n" " _CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n" " _IMPLEMENTS_INTERFACE(Actionable)\n" "public:\n" "\n" " _CTOR_DEFAULT\n" " explicit Button(const Glib::ustring& label, bool mnemonic = false);\n" "\n" " _WRAP_METHOD(void set_label(const Glib::ustring& label), gtk_button_set_label)\n" "\n" " ...\n" "\n" " _WRAP_SIGNAL(void clicked(), \"clicked\")\n" "\n" " ...\n" "\n" " _WRAP_PROPERTY(\"label\", Glib::ustring)\n" "};\n" "\n" "} // namespace Gtk\n" msgstr "" "\n" "#include <gtkmm/widget.h>\n" "#include <gtkmm/actionable.h>\n" "_DEFS(gtkmm,gtk)\n" "_PINCLUDE(gtkmm/private/widget_p.h)\n" "\n" "namespace Gtk\n" "{\n" "\n" "class Button\n" " : public Widget,\n" " public Actionable\n" "{\n" " _CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n" " _IMPLEMENTS_INTERFACE(Actionable)\n" "public:\n" "\n" " _CTOR_DEFAULT\n" " explicit Button(const Glib::ustring& label, bool mnemonic = false);\n" "\n" " _WRAP_METHOD(void set_label(const Glib::ustring& label), gtk_button_set_label)\n" "\n" " ...\n" "\n" " _WRAP_SIGNAL(void clicked(), \"clicked\")\n" "\n" " ...\n" "\n" " _WRAP_PROPERTY(\"label\", Glib::ustring)\n" "};\n" "\n" "} // namespace Gtk\n" #. (itstool) path: varlistentry/term #: C/index-in.docbook:10060 msgid "_DEFS()" msgstr "_DEFS()" #. (itstool) path: listitem/para #: C/index-in.docbook:10061 #, fuzzy msgid "" "Specifies the destination directory for generated sources, and the name of " "the main .defs file that gmmproc should parse." msgstr "" "Anger målkatalogen för genererade källor, och namnet på den huvudsakliga ." "defs-filen som gmmproc ska tolka." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10064 msgid "_PINCLUDE()" msgstr "_PINCLUDE()" #. (itstool) path: listitem/para #: C/index-in.docbook:10065 #, fuzzy msgid "" "Tells gmmproc to include a header in the generated " "private/button_p.h file." msgstr "" "Säger till gmmproc att inkludera ett huvud i den " "genererade filen private/button_p.h." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10068 msgid "_CLASS_GTKOBJECT()" msgstr "_CLASS_GTKOBJECT()" #. (itstool) path: listitem/para #: C/index-in.docbook:10069 #, fuzzy msgid "" "Tells gmmproc to add some typedefs, constructors, and " "standard methods to this class, as appropriate when wrapping a widget." msgstr "" "Säger till gmmproc att lägga till typdefinitioner, " "konstruktorer och standardmetoder till denna klass, som lämpligt vid omslag " "av en komponent." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10072 msgid "_IMPLEMENTS_INTERFACE()" msgstr "_IMPLEMENTS_INTERFACE()" #. (itstool) path: listitem/para #: C/index-in.docbook:10073 msgid "" "Tells gmmproc to add initialization code for the " "interface." msgstr "" "Säger till gmmproc att lägga till initieringskod för " "gränssnittet." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10076 msgid "_CTOR_DEFAULT" msgstr "_CTOR_DEFAULT" #. (itstool) path: listitem/para #: C/index-in.docbook:10077 msgid "Adds a default constructor." msgstr "Lägger till en standardkonstruktor." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10080 msgid "" "_WRAP_METHOD(), _WRAP_SIGNAL(), " "and _WRAP_PROPERTY()" msgstr "" "_WRAP_METHOD(), _WRAP_SIGNAL() och " "_WRAP_PROPERTY()" #. (itstool) path: listitem/para #: C/index-in.docbook:10083 #, fuzzy msgid "Add methods to wrap parts of the C API." msgstr "Lägger till metoder för att omsluta delar av C-API:t." #. (itstool) path: section/para #: C/index-in.docbook:10057 msgid "The macros in this example do the following: <_:variablelist-1/>" msgstr "Makrona i detta exempel gör följande: <_:variablelist-1/>" #. (itstool) path: section/para #: C/index-in.docbook:10087 #, fuzzy msgid "" "The .h and .cc files will be generated from the .hg and .ccg files by " "processing them with gmmproc like so, though this happens " "automatically when using the above build structure:" msgstr "" ".h- och .cc-filerna kommer genereras från .hg- och .ccg-filerna genom att " "bearbeta dem med gmmproc så här, men detta händer " "automatiskt när byggstrukturen ovan används:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10091 #, no-wrap msgid "" "\n" "$ cd gtk/src\n" "$ /usr/lib/glibmm-2.68/proc/gmmproc -I ../../tools/m4 --defs . button . ./../gtkmm\n" msgstr "" "\n" "$ cd gtk/src\n" "$ /usr/lib/glibmm-2.68/proc/gmmproc -I ../../tools/m4 --defs . button . ./../gtkmm\n" #. (itstool) path: section/para #: C/index-in.docbook:10095 #, fuzzy msgid "" "Notice that we provided gmmproc with the path to the .m4 " "convert files, the path to the .defs file, the name of a .hg file, the " "source directory, and the destination directory." msgstr "" "Observera att vi tillhandahöll gmmproc med sökvägen till ." "m4-konverteringsfilerna, sökvägen till .defs-filen, namnet på en .hg-fil, " "källkatalogen och målkatalogen." #. (itstool) path: section/para #: C/index-in.docbook:10098 #, fuzzy msgid "" "You should avoid including the C header from your C++ header, to avoid " "polluting the global namespace, and to avoid exporting unnecessary public " "API. But you will need to include the necessary C headers from your .ccg " "file." msgstr "" "Du bör undvika att inkludera C-huvudet från ditt C++-huvud, för att undvika " "att förorena den globala namnrymden, och för att undvika att exportera öppet " "API i onödan. Men du kommer behöva inkludera de nödvändiga C-huvudena från " "din .ccg-fil." #. (itstool) path: section/para #: C/index-in.docbook:10103 msgid "The macros are explained in more detail in the following sections." msgstr "Makrona förklaras mer i detalj i avsnitten som följer." #. (itstool) path: section/title #: C/index-in.docbook:10106 msgid "m4 Conversions" msgstr "m4-konverteringar" #. (itstool) path: section/para #: C/index-in.docbook:10108 #, fuzzy msgid "" "The macros that you use in the .hg and .ccg files often need to know how to " "convert a C++ type to a C type, or vice-versa. gmmproc " "takes this information from an .m4 file in your tools/m4/ " "or codegen/m4/ directory. This allows it to call a C " "function in the implementation of your C++ method, passing the appropriate " "parameters to that C function. For instance, this tells gmmproc how to convert a GtkTreeView pointer to a " "Gtk::TreeView pointer:" msgstr "" "Makrona som du använder i .hg- och .ccg-filerna behöver ofta veta hur de ska " "konvertera en C++-typ till en C-typ och omvänt. gmmproc " "tar denna information från en .m4-fil i din katalog tools/m4/ eller codegen/m4/. Detta låter det anropa en C-" "funktion i implementationen av din C++-metod, skickade de lämpliga " "parametrarna till den C-funktionen. Exempelvis säger det här till " "gmmproc hur en GtkTreeView-pekare " "konverteras till en Gtk::TreeView-pekare:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10116 #, no-wrap msgid "" "\n" "_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')\n" msgstr "" "\n" "_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')\n" #. (itstool) path: section/para #: C/index-in.docbook:10120 msgid "" "$3 will be replaced by the parameter name when this " "conversion is used by gmmproc." msgstr "" "$3 kommer ersättas av parameternamnet när denna " "konvertering används av gmmproc." #. (itstool) path: section/para #: C/index-in.docbook:10124 msgid "" "Some extra macros make this easier and consistent. Look in " "gtkmm's .m4 files for examples. For instance:" msgstr "" "Några extra makron gör detta lättare och mer konsekvent. Exempel kan ses i " "gtkmm:s .m4-filer. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10128 #, fuzzy, no-wrap msgid "" "\n" "_CONVERSION(`PrintSettings&',`GtkPrintSettings*',__FR2P)\n" "_CONVERSION(`const PrintSettings&',`GtkPrintSettings*',__FCR2P)\n" "_CONVERSION(`const Glib::RefPtr<Printer>&',`GtkPrinter*',__CONVERT_REFPTR_TO_P($3))\n" msgstr "" "\n" "_CONVERSION(`PrintSettings&',`GtkPrintSettings*',__FR2P)\n" "_CONVERSION(`const PrintSettings&',`GtkPrintSettings*',__FCR2P)\n" "_CONVERSION(`const Glib::RefPtr<Printer>&',`GtkPrinter*',__CONVERT_REFPTR_TO_P($3))\n" #. (itstool) path: section/title #: C/index-in.docbook:10136 msgid "m4 Initializations" msgstr "m4-initieringar" #. (itstool) path: section/para #: C/index-in.docbook:10138 #, fuzzy msgid "" "Often when wrapping methods, it is desirable to store the return of the C " "function in what is called an output parameter. In this case, the C++ method " "returns void but an output parameter in which to store the " "value of the C function is included in the argument list of the C++ method. " "gmmproc allows such functionality, but appropriate " "initialization macros must be included to tell gmmproc " "how to initialize the C++ parameter from the return of the C function." msgstr "" "Ofta är det vid omslag av metoder önskvärt att lagra returvärdet för C-" "funktionen i vad som kallas en utdataparameter. I detta fall returnerar C++-" "metoden void men en utdataparameter i vilken värdet för C-" "funktionen ska lagras inkluderas i argumentlistan för C++-metoden. " "gmmproc tillåter sådan funktionalitet, men lämpliga " "initieringsmakron måste inkluderas för att säga till gmmproc hur C++-parametern ska initieras från returvärdet på C-funktionen." #. (itstool) path: section/para #: C/index-in.docbook:10147 #, fuzzy msgid "" "For example, if there was a C function that returned a GtkWidget* and for some reason, instead of having the C++ method also return the " "widget, it was desirable to have the C++ method place the widget in a " "specified output parameter, an initialization macro such as the following " "would be necessary:" msgstr "" "Om det exempelvis fanns en C-funktion som returnerade en GtkWidget* och det av någon anledning i stället för att C++-metoden också " "returnerar komponenten var önskvärt att C++-metoden placerar komponenten i " "en angiven utdataparameter, skulle ett initieringsmakro som det följande " "vara nödvändigt:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10154 #, no-wrap msgid "" "\n" "_INITIALIZATION(`Gtk::Widget&',`GtkWidget*',`$3 = Glib::wrap($4)')\n" msgstr "" "\n" "_INITIALIZATION(`Gtk::Widget&',`GtkWidget*',`$3 = Glib::wrap($4)')\n" #. (itstool) path: section/para #: C/index-in.docbook:10158 #, fuzzy msgid "" "$3 will be replaced by the output parameter name of the C+" "+ method and $4 will be replaced by the return of the C " "function when this initialization is used by gmmproc. For " "convenience, $1 will also be replaced by the C++ type " "without the ampersand (&) and $2 will be replaced by " "the C type." msgstr "" "$3 kommer ersättas med utdataparameternamnet för C++-" "metoden och $4 kommer ersättas med returvärdet för C-" "funktionen när denna initiering används av gmmproc. För " "bekvämlighets skulle kommer $1 också ersättas med C++-" "typen utan et-tecknet (&) och $2 kommer ersättas med " "C-typen." #. (itstool) path: section/title #: C/index-in.docbook:10168 msgid "Class macros" msgstr "Klassmakron" #. (itstool) path: section/para #: C/index-in.docbook:10170 #, fuzzy msgid "" "The class macro declares the class itself and its relationship with the " "underlying C type. It generates some internal constructors, the member " "gobject_, typedefs, the gobj() " "accessors, type registration, and the Glib::wrap() " "method, among other things." msgstr "" "Klassmakrot deklarerar själva klassen och dess relation med den " "underliggande C-typen. Det genererar några interna konstruktorer, " "medlemmarnas gobject_, typedef, gobj()-åtkommarna, typregistrering och metoden Glib::wrap() med mera." #. (itstool) path: section/para #: C/index-in.docbook:10175 #, fuzzy msgid "" "Other macros, such as _WRAP_METHOD() and " "_WRAP_SIGNAL() may only be used after a call to a " "_CLASS_* macro." msgstr "" "Andra makron, som _WRAP_METHOD() and " "_WRAP_SIGNAL() kan endast användas efter ett anrop till " "ett _CLASS_*-makro." #. (itstool) path: section/title #: C/index-in.docbook:10180 msgid "_CLASS_GOBJECT" msgstr "_CLASS_GOBJECT" #. (itstool) path: section/para #: C/index-in.docbook:10182 #, fuzzy msgid "" "This macro declares a wrapper for a type that is derived from " "GObject, but whose wrapper is not derived from " "Gtk::Object." msgstr "" "Detta makro deklarerar ett omslag för en typ som härleds från " "GObject, men vars omslag inte härleds från " "Gtk::Object." #. (itstool) path: section/para #: C/index-in.docbook:10185 #, fuzzy msgid "" "_CLASS_GOBJECT( C++ class, C class, C casting macro, C++ base " "class, C base class )" msgstr "" "_CLASS_GOBJECT( C++-klass, C-klass, C-typkonverteringsmakro, C++-" "basklass, C-basklass )" #. (itstool) path: section/para #: C/index-in.docbook:10186 msgid "For instance, from adjustment.hg:" msgstr "Till exempel, från adjustment.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10187 #, no-wrap msgid "" "\n" "_CLASS_GOBJECT(Adjustment, GtkAdjustment, GTK_ADJUSTMENT, Glib::Object, GObject)\n" msgstr "" "\n" "_CLASS_GOBJECT(Adjustment, GtkAdjustment, GTK_ADJUSTMENT, Glib::Object, GObject)\n" #. (itstool) path: section/title #: C/index-in.docbook:10193 msgid "_CLASS_GTKOBJECT" msgstr "_CLASS_GTKOBJECT" #. (itstool) path: section/para #: C/index-in.docbook:10195 msgid "" "This macro declares a wrapper for a type whose wrapper is derived from " "Gtk::Object, such as a widget or dialog." msgstr "" "Detta makro deklarerar ett omslag för en typ vars omslag härleds från " "Gtk::Object, som en komponent eller dialogruta." #. (itstool) path: section/para #: C/index-in.docbook:10197 msgid "" "_CLASS_GTKOBJECT( C++ class, C class, C casting macro, C++ base " "class, C base class )" msgstr "" "_CLASS_GTKOBJECT( C++-klass, C-klass, C-typkonverteringsmakro, C++-" "basklass, C-basklass )" #. (itstool) path: section/para #: C/index-in.docbook:10198 C/index-in.docbook:10702 C/index-in.docbook:10807 msgid "For instance, from button.hg:" msgstr "Till exempel, från button.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10199 #, no-wrap msgid "" "\n" "_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n" msgstr "" "\n" "_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n" #. (itstool) path: section/para #: C/index-in.docbook:10202 #, fuzzy msgid "" "You will typically use this macro when the class already derives from " "Gtk::Object. For instance, you will use it when " "wrapping a GTK Widget, because Gtk::Widget derives " "from Gtk::Object." msgstr "" "Du kommer typiskt använda detta makro när klassen redan härleds från " "Gtk::Object. Du kommer exempelvis använda det när du " "omsluter en GTK-komponent, för Gtk::Widget härleds " "från Gtk::Object." #. (itstool) path: section/para #: C/index-in.docbook:10206 #, fuzzy msgid "" "You might also derive non-widget classes from Gtk::Object so they can be used without Glib::RefPtr. " "For instance, they could then be instantiated with Gtk::" "make_managed() or on the stack as a member variable. This is " "convenient, but you should use this only when you are sure that true " "reference-counting is not needed. We consider it useful for widgets." msgstr "" "Du kan också härled icke-komponentklasser från Gtk::Object så att de kan användas utan Glib::RefPtr. " "De kunde då exempelvis instansieras med Gtk::make_managed() eller på stacken som en medlemsvariabel. Detta är bekvämt, men du " "bör endast använda detta när du är säker att sann referensräkning inte " "behövs. Vi anser det vara användbart för komponenter." #. (itstool) path: section/title #: C/index-in.docbook:10216 msgid "_CLASS_BOXEDTYPE" msgstr "_CLASS_BOXEDTYPE" #. (itstool) path: section/para #: C/index-in.docbook:10218 #, fuzzy msgid "" "This macro declares a wrapper for a non-GObject " "struct, registered with g_boxed_type_register_static()." msgstr "" "Detta makro deklarerar ett omslag för en struct som inte är ett " "GObject, registrerat med " "g_boxed_type_register_static()." #. (itstool) path: section/para #: C/index-in.docbook:10221 #, fuzzy msgid "" "_CLASS_BOXEDTYPE( C++ class, C class, new function, copy function, " "free function )" msgstr "" "_CLASS_BOXEDTYPE( C++-klass, C-klass, new-funktion, copy-funktion, " "free-funktion )" #. (itstool) path: section/para #: C/index-in.docbook:10222 msgid "For instance, from Gdk::RGBA:" msgstr "Till exempel, från Gdk::RGBA:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10223 #, no-wrap msgid "" "\n" "_CLASS_BOXEDTYPE(RGBA, GdkRGBA, NONE, gdk_rgba_copy, gdk_rgba_free)\n" msgstr "" "\n" "_CLASS_BOXEDTYPE(RGBA, GdkRGBA, NONE, gdk_rgba_copy, gdk_rgba_free)\n" #. (itstool) path: section/title #: C/index-in.docbook:10229 msgid "_CLASS_BOXEDTYPE_STATIC" msgstr "_CLASS_BOXEDTYPE_STATIC" #. (itstool) path: section/para #: C/index-in.docbook:10231 #, fuzzy msgid "" "This macro declares a wrapper for a simple assignable struct such as " "GdkRectangle. It is similar to " "_CLASS_BOXEDTYPE, but the C struct is not allocated " "dynamically." msgstr "" "Detta makro deklarerar ett omslag för en enkel tilldelningsbar struct som " "GdkRectangle. Det liknar _CLASS_BOXEDTYPE, men C-structen allokeras inte dynamiskt." #. (itstool) path: section/para #: C/index-in.docbook:10235 msgid "_CLASS_BOXEDTYPE_STATIC( C++ class, C class )" msgstr "_CLASS_BOXEDTYPE_STATIC( C++-klass, C-klass )" #. (itstool) path: section/para #: C/index-in.docbook:10236 msgid "For instance, for Gdk::Rectangle:" msgstr "Till exempel, för Gdk::Rectangle:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10237 #, no-wrap msgid "" "\n" "_CLASS_BOXEDTYPE_STATIC(Rectangle, GdkRectangle)\n" msgstr "" "\n" "_CLASS_BOXEDTYPE_STATIC(Rectangle, GdkRectangle)\n" #. (itstool) path: section/title #: C/index-in.docbook:10243 msgid "_CLASS_OPAQUE_COPYABLE" msgstr "_CLASS_OPAQUE_COPYABLE" #. (itstool) path: section/para #: C/index-in.docbook:10245 #, fuzzy msgid "" "This macro declares a wrapper for an opaque struct that has copy and free " "functions. The new, copy and free functions will be used to instantiate the " "default constructor, copy constructor and destructor." msgstr "" "Detta makro deklarerar ett omslag för en ogenomskinlig struct som har copy- " "och free-funktioner. New-, copy- och free-funktionerna kommer användas för " "att instansiera standardkonstruktorn, konstruktor och destruktor för copy." #. (itstool) path: section/para #: C/index-in.docbook:10248 #, fuzzy msgid "" "_CLASS_OPAQUE_COPYABLE( C++ class, C class, new function, copy " "function, free function )" msgstr "" "_CLASS_OPAQUE_COPYABLE( C++-klass, C-klass, new-funktion, copy-" "funktion, free-funktion )" #. (itstool) path: section/para #: C/index-in.docbook:10249 msgid "For instance, from Glib::VariantType:" msgstr "Till exempel, från Glib::VariantType:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10250 #, no-wrap msgid "" "\n" "_CLASS_OPAQUE_COPYABLE(VariantType, GVariantType, NONE, g_variant_type_copy, g_variant_type_free)\n" msgstr "" "\n" "_CLASS_OPAQUE_COPYABLE(VariantType, GVariantType, NONE, g_variant_type_copy, g_variant_type_free)\n" #. (itstool) path: section/title #: C/index-in.docbook:10256 msgid "_CLASS_OPAQUE_REFCOUNTED" msgstr "_CLASS_OPAQUE_REFCOUNTED" #. (itstool) path: section/para #: C/index-in.docbook:10258 #, fuzzy msgid "" "This macro declares a wrapper for a reference-counted opaque struct. The C++ " "wrapper cannot be directly instantiated and can only be used with " "Glib::RefPtr." msgstr "" "Detta makro deklarerar ett omslag för en referensräknad ogenomskinlig " "struct. C++-omslaget kan inte instansieras direkt och kan endast användas " "med Glib::RefPtr." #. (itstool) path: section/para #: C/index-in.docbook:10261 #, fuzzy msgid "" "_CLASS_OPAQUE_REFCOUNTED( C++ class, C class, new function, ref " "function, unref function )" msgstr "" "_CLASS_OPAQUE_REFCOUNTED( C++-klass, C-klass, new-funktion, ref-" "funktion, unref-funktion )" #. (itstool) path: section/para #: C/index-in.docbook:10262 msgid "For instance, for Gtk::CssSection:" msgstr "Till exempel, för Gtk::CssSection:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10263 #, no-wrap msgid "" "\n" "_CLASS_OPAQUE_REFCOUNTED(CssSection, GtkCssSection, NONE, gtk_css_section_ref, gtk_css_section_unref)\n" msgstr "" "\n" "_CLASS_OPAQUE_REFCOUNTED(CssSection, GtkCssSection, NONE, gtk_css_section_ref, gtk_css_section_unref)\n" #. (itstool) path: section/title #: C/index-in.docbook:10269 msgid "_CLASS_GENERIC" msgstr "_CLASS_GENERIC" #. (itstool) path: section/para #: C/index-in.docbook:10271 #, fuzzy msgid "" "This macro can be used to wrap structs which don't fit into any specialized " "category." msgstr "" "Detta makro kan användas för att slå om structar som inte passar in i någon " "specialiserad kategori." #. (itstool) path: section/para #: C/index-in.docbook:10273 msgid "_CLASS_GENERIC( C++ class, C class )" msgstr "_CLASS_GENERIC( C++-klass, C-klass )" #. (itstool) path: section/para #: C/index-in.docbook:10274 msgid "For instance, for Gdk::TimeCoord:" msgstr "Till exempel, för Gdk::TimeCoord:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10275 #, no-wrap msgid "" "\n" "_CLASS_GENERIC(TimeCoord, GdkTimeCoord)\n" msgstr "" "\n" "_CLASS_GENERIC(TimeCoord, GdkTimeCoord)\n" #. (itstool) path: section/title #: C/index-in.docbook:10281 msgid "_CLASS_INTERFACE" msgstr "_CLASS_INTERFACE" #. (itstool) path: section/para #: C/index-in.docbook:10283 msgid "" "This macro declares a wrapper for a type that is derived from " "GTypeInterface." msgstr "" "Detta makro deklarerar ett omslag för en typ som härleds från " "GTypeInterface." #. (itstool) path: section/para #: C/index-in.docbook:10286 #, fuzzy msgid "" "_CLASS_INTERFACE( C++ class, C class, C casting macro, C interface " "struct, Base C++ class (optional), Base C class (optional) )" msgstr "" "_CLASS_INTERFACE( C++-klass, C-klass, C-typkonverteringsmakro, C-" "gränssnittsstruct, C++-basklass (valfri), C-basklass (valfri) )" #. (itstool) path: section/para #: C/index-in.docbook:10287 msgid "For instance, from celleditable.hg:" msgstr "Till exempel, från celleditable.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10289 #, no-wrap msgid "" "\n" "_CLASS_INTERFACE(CellEditable, GtkCellEditable, GTK_CELL_EDITABLE, GtkCellEditableIface)\n" msgstr "" "\n" "_CLASS_INTERFACE(CellEditable, GtkCellEditable, GTK_CELL_EDITABLE, GtkCellEditableIface)\n" #. (itstool) path: section/para #: C/index-in.docbook:10292 #, fuzzy msgid "" "Two extra optional parameters were once added, for the case that the " "interface derives from another interface, which was believed to be the case " "when the GInterface has another GInterface as a prerequisite. This is a " "misunderstanding, though. When GInterface A has GInterface B as a " "prerequisite, it means that every class that implements A shall also " "implement B. For instance, from loadableicon.hg in " "glibmm-2.4:" msgstr "" "Två extra valfria parametrar lades till en gång, för fallet att gränssnittet " "härleds från ett annat gränssnitt, vilket antogs vara fallet när GInterface " "har ett annat GInterface som förkrav. Detta är dock ett missförstånd. När " "GInterface A har GInterface B som ett förkrav så betyder det att varje klass " "som implementerar A också ska implementera B. Exempelvis från " "loadableicon.hg i glibmm-2.4:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10298 #, no-wrap msgid "" "\n" "_CLASS_INTERFACE(LoadableIcon, GLoadableIcon, G_LOADABLE_ICON, GLoadableIconIface, Icon, GIcon)\n" msgstr "" "\n" "_CLASS_INTERFACE(LoadableIcon, GLoadableIcon, G_LOADABLE_ICON, GLoadableIconIface, Icon, GIcon)\n" #. (itstool) path: section/title #: C/index-in.docbook:10306 msgid "Constructor macros" msgstr "Konstruktormakron" #. (itstool) path: section/para #: C/index-in.docbook:10308 #, fuzzy msgid "" "The _CTOR_DEFAULT() and _WRAP_CTOR() macros add constructors, wrapping the specified *_new() C functions. These macros assume that the C object has properties " "with the same names as the function parameters, as is usually the case, so " "that it can supply the parameters directly to a g_object_new() call. These constructors never actually call the " "*_new() C functions, because gtkmm must actually instantiate derived GTypes, and the " "*_new() C functions are meant only as convenience " "functions for C programmers." msgstr "" "Makrona _CTOR_DEFAULT() och _WRAP_CTOR() lägger till konstruktorer som omsluter de angivna " "*_new()-funktionerna i C. Dessa makron antar att C-" "objektet har egenskaper med samma namn som funktionsparametrarna, som " "vanligen är fallet, så att det kan tillhandahålla parametrarna direkt till " "ett g_object_new()-anrop. Dessa konstruktorer anropar " "faktiskt *_new()-funktionerna i C, för " "gtkmm måste faktiskt instansiera härledda GType-" "typer, och *_new()-funktionerna i C är bara tänkta som " "bekvämlighetsfunktioner för C-programmerare." #. (itstool) path: section/para #: C/index-in.docbook:10318 #, fuzzy msgid "" "When using _CLASS_GOBJECT(), the constructors should be " "protected (rather than public) and each constructor should have a " "corresponding _WRAP_CREATE() in the public section. " "This prevents the class from being instantiated without using a " "RefPtr. For instance:" msgstr "" "När _CLASS_GOBJECT() används bör konstruktorerna vara " "protected (snarare än public) och varje konstruktor bör ha en motsvarande " "_WRAP_CREATE() i public-delen. Detta förhindrar klassen " "från att instansieras utan att använda en RefPtr. " "Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10323 #, fuzzy, no-wrap msgid "" "\n" "class TextMark : public Glib::Object\n" "{\n" " _CLASS_GOBJECT(TextMark, GtkTextMark, GTK_TEXT_MARK, Glib::Object, GObject)\n" "\n" "protected:\n" " _WRAP_CTOR(TextMark(const Glib::ustring& name, bool left_gravity = true), gtk_text_mark_new)\n" "\n" "public:\n" " _WRAP_CREATE(const Glib::ustring& name, bool left_gravity = true)\n" msgstr "" "\n" "class TextMark : public Glib::Object\n" "{\n" " _CLASS_GOBJECT(TextMark, GtkTextMark, GTK_TEXT_MARK, Glib::Object, GObject)\n" "\n" "protected:\n" " _WRAP_CTOR(TextMark(const Glib::ustring& name, bool left_gravity = true), gtk_text_mark_new)\n" "\n" "public:\n" " _WRAP_CREATE(const Glib::ustring& name, bool left_gravity = true)\n" #. (itstool) path: section/title #: C/index-in.docbook:10336 msgid "_CTOR_DEFAULT" msgstr "_CTOR_DEFAULT" #. (itstool) path: section/para #: C/index-in.docbook:10338 msgid "This macro creates a default constructor with no arguments." msgstr "Detta makro skapar en standardkonstruktor utan argument." #. (itstool) path: section/title #: C/index-in.docbook:10343 msgid "_WRAP_CTOR" msgstr "_WRAP_CTOR" #. (itstool) path: section/para #: C/index-in.docbook:10345 #, fuzzy msgid "" "This macro creates a constructor with arguments, equivalent to a " "*_new() C function. It won't actually call the " "*_new() function, but will simply create an equivalent " "constructor with the same argument types. It takes a C++ constructor " "signature, and a C function name." msgstr "" "Detta makro skapar en konstruktor med argument, motsvarande en " "*_new()-funktion i C. Den kommer inte faktiskt anropa " "*_new()-funktionen, utan kommer helt enkelt skapa en " "motsvarande konstruktor med samma argumenttyper. Den tar en C++-" "konstruktorsignatur och ett C-funktionsnamn." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10355 C/index-in.docbook:10874 msgid "errthrow" msgstr "errthrow" #. (itstool) path: listitem/para #: C/index-in.docbook:10357 #, fuzzy msgid "" "This tells gmmproc that the C *_new() has a final GError** parameter which should be " "ignored." msgstr "" "Detta säger till gmmproc att *_new() " "i C har en slutgiltig GError**-parameter som ska ignoreras." #. (itstool) path: section/para #: C/index-in.docbook:10352 msgid "It also takes an optional extra argument: <_:variablelist-1/>" msgstr "Det tar också ett valfritt extra argument: <_:variablelist-1/>" #. (itstool) path: section/title #: C/index-in.docbook:10366 msgid "Hand-coding constructors" msgstr "Koda konstruktorer för hand" #. (itstool) path: section/para #: C/index-in.docbook:10368 #, fuzzy msgid "" "When a constructor must be partly hand written because, for instance, the " "*_new() C function's parameters do not correspond " "directly to object properties, or because the *_new() C " "function does more than call g_object_new(), the " "_CONSTRUCT() macro may be used in the .ccg file to save " "some work. The _CONSTRUCT macro takes a series of " "property names and values. For instance, from button.ccg:" msgstr "" "När en konstruktor måste skrivas delvis för hand eftersom, exempelvis, " "*_new()-funktionens parametrar i C inte direkt " "motsvarar objektegenskaper, eller för att *_new()-" "funktionen i C gör mer än att anropa g_object_new(), så " "kan makrot _CONSTRUCT() användas i .ccg-filen för att " "spara lite arbete. Makrot _CONSTRUCT tar en serie " "egenskapsnamn och värden. Till exempel, från button.ccg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10376 #, fuzzy, no-wrap msgid "" "\n" "Button::Button(const Glib::ustring& label, bool mnemonic)\n" ":\n" " _CONSTRUCT(\"label\", label.c_str(), \"use_underline\", gboolean(mnemonic))\n" "{}\n" msgstr "" "\n" "Button::Button(const Glib::ustring& label, bool mnemonic)\n" ":\n" " _CONSTRUCT(\"label\", label.c_str(), \"use_underline\", gboolean(mnemonic))\n" "{}\n" #. (itstool) path: section/title #: C/index-in.docbook:10387 msgid "Macros that suppress generation of some code" msgstr "Makron som undertrycker generering av viss kod" #. (itstool) path: section/para #: C/index-in.docbook:10389 msgid "" "Some macros suppress the generation of some code when they are used after a " "_CLASS_* macro. Some suppress the definition in the " "generated .cc file, others suppress both the declaration in the .h file and " "the definition in the .cc file." msgstr "" "Några makron undertrycker genererandet av viss kod när de används efter ett " "_CLASS_*-makro. Vissa undertrycker definitionen i den " "genererade .cc-filen, andra undertrycker både deklarationen i .h-filen och " "definitionen i .cc-filen." #. (itstool) path: section/title #: C/index-in.docbook:10396 msgid "_CUSTOM_DEFAULT_CTOR" msgstr "_CUSTOM_DEFAULT_CTOR" #. (itstool) path: section/para #: C/index-in.docbook:10398 msgid "" "Suppresses declaration and definition of default constructor in " "_CLASS_BOXEDTYPE, _CLASS_BOXEDTYPE_STATIC and _CLASS_OPAQUE_COPYABLE." msgstr "" "Undertrycker deklaration och definition av standardkonstruktorn i " "_CLASS_BOXEDTYPE, _CLASS_BOXEDTYPE_STATIC och _CLASS_OPAQUE_COPYABLE." #. (itstool) path: section/title #: C/index-in.docbook:10405 msgid "_CUSTOM_CTOR_CAST" msgstr "_CUSTOM_CTOR_CAST" #. (itstool) path: section/para #: C/index-in.docbook:10407 #, fuzzy msgid "" "Suppresses declaration and definition of the constructor that takes a " "pointer to the wrapped C object in _CLASS_BOXEDTYPE and " "_CLASS_BOXEDTYPE_STATIC." msgstr "" "Undertrycker deklaration och definition av konstruktorn som tar en pekare " "till det omslutna C-objektet i _CLASS_BOXEDTYPE och " "_CLASS_BOXEDTYPE_STATIC." #. (itstool) path: section/para #: C/index-in.docbook:10411 #, fuzzy msgid "" "Suppresses definition of the constructor that takes a pointer to the wrapped " "C object in _CLASS_INTERFACE and " "_CLASS_OPAQUE_COPYABLE." msgstr "" "Undertrycker definition av konstruktorn som tar en pekare till det omslutna " "C-objektet i _CLASS_INTERFACE och " "_CLASS_OPAQUE_COPYABLE." #. (itstool) path: section/para #: C/index-in.docbook:10415 #, fuzzy msgid "" "Suppresses definition of the constructor that takes a pointer to the wrapped " "C object and the constructor that takes construct_params in " "_CLASS_GOBJECT and _CLASS_GTKOBJECT." msgstr "" "Undertrycker definition av konstruktorn som tar en pekare till det omslutna " "C-objektet och konstruktorn som tar construct_params i " "_CLASS_GOBJECT och _CLASS_GTKOBJECT." #. (itstool) path: section/title #: C/index-in.docbook:10422 msgid "_CUSTOM_DTOR" msgstr "_CUSTOM_DTOR" #. (itstool) path: section/para #: C/index-in.docbook:10424 msgid "" "Suppresses definition of destructor in _CLASS_GOBJECT " "and _CLASS_GTKOBJECT." msgstr "" "Undertrycker definition av destruktorn i _CLASS_GOBJECT " "and _CLASS_GTKOBJECT." #. (itstool) path: section/title #: C/index-in.docbook:10430 msgid "_CUSTOM_MOVE_OPERATIONS" msgstr "_CUSTOM_MOVE_OPERATIONS" #. (itstool) path: section/para #: C/index-in.docbook:10432 #, fuzzy msgid "" "Suppresses declaration and definition of move constructor and move " "assignment operator in _CLASS_GOBJECT and " "_CLASS_GTKOBJECT." msgstr "" "Undertrycker deklaration och definition av move-konstruktor och move-" "tilldelningsoperator i _CLASS_GOBJECT och " "_CLASS_GTKOBJECT." #. (itstool) path: section/para #: C/index-in.docbook:10436 msgid "For example:" msgstr "Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10437 #, fuzzy, no-wrap msgid "" "\n" "class Derived : public Glib::Object\n" "{\n" " _CLASS_GOBJECT(Derived, GDerived, G_DERIVED, Glib::Object, GObject)\n" "\n" " _CUSTOM_MOVE_OPERATIONS\n" "\n" "public:\n" " Derived(Derived&& src) noexcept;\n" " Derived& operator=(Derived&& src) noexcept;\n" " // ...\n" "};\n" msgstr "" "\n" "class Derived : public Glib::Object\n" "{\n" " _CLASS_GOBJECT(Derived, GDerived, G_DERIVED, Glib::Object, GObject)\n" "\n" " _CUSTOM_MOVE_OPERATIONS\n" "\n" "public:\n" " Derived(Derived&& src) noexcept;\n" " Derived& operator=(Derived&& src) noexcept;\n" " // ...\n" "};\n" #. (itstool) path: section/title #: C/index-in.docbook:10453 msgid "_CUSTOM_WRAP_NEW" msgstr "_CUSTOM_WRAP_NEW" #. (itstool) path: section/para #: C/index-in.docbook:10455 msgid "" "Suppresses definition of Glib::wrap_new() function in " "_CLASS_GOBJECT." msgstr "" "Undertrycker definition av Glib::wrap_new()-funktionen " "i _CLASS_GOBJECT." #. (itstool) path: section/title #: C/index-in.docbook:10461 msgid "_CUSTOM_WRAP_FUNCTION" msgstr "_CUSTOM_WRAP_FUNCTION" #. (itstool) path: section/para #: C/index-in.docbook:10463 msgid "" "Suppresses definition of Glib::wrap() function in " "_CLASS_GOBJECT and _CLASS_GTKOBJECT." msgstr "" "Undertrycker definition av Glib::wrap()-funktionen i " "_CLASS_GOBJECT och _CLASS_GTKOBJECT." #. (itstool) path: section/title #: C/index-in.docbook:10469 msgid "_NO_WRAP_FUNCTION" msgstr "_NO_WRAP_FUNCTION" #. (itstool) path: section/para #: C/index-in.docbook:10471 msgid "" "Suppresses declaration and definition of Glib::wrap() " "function in _CLASS_GOBJECT, _CLASS_BOXEDTYPE, _CLASS_BOXEDTYPE_STATIC, " "_CLASS_OPAQUE_COPYABLE, _CLASS_INTERFACE and _CLASS_GTKOBJECT." msgstr "" "Undertrycker deklaration och definition av Glib::wrap()-" "funktionen i _CLASS_GOBJECT, " "_CLASS_BOXEDTYPE, _CLASS_BOXEDTYPE_STATIC, _CLASS_OPAQUE_COPYABLE, " "_CLASS_INTERFACE och _CLASS_GTKOBJECT." #. (itstool) path: section/title #: C/index-in.docbook:10481 msgid "Method macros" msgstr "Metodmakron" #. (itstool) path: section/title #: C/index-in.docbook:10484 msgid "_WRAP_METHOD" msgstr "_WRAP_METHOD" #. (itstool) path: section/para #: C/index-in.docbook:10486 #, fuzzy msgid "This macro generates the C++ method to wrap a C function." msgstr "Detta makro genererar C++-metoden som ska omsluta en C-funktion." #. (itstool) path: section/para #: C/index-in.docbook:10487 msgid "" "_WRAP_METHOD( C++ method signature, C function name)" msgstr "_WRAP_METHOD( C++-metodsignatur, C-funktionsnamn)" #. (itstool) path: section/para #: C/index-in.docbook:10488 msgid "For instance, from entry.hg:" msgstr "Till exempel, från entry.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10489 #, no-wrap msgid "" "\n" "_WRAP_METHOD(void set_text(const Glib::ustring& text), gtk_entry_set_text)\n" msgstr "" "\n" "_WRAP_METHOD(void set_text(const Glib::ustring& text), gtk_entry_set_text)\n" #. (itstool) path: section/para #: C/index-in.docbook:10492 #, fuzzy msgid "" "The C function (e.g. gtk_entry_set_text) is described " "more fully in the .defs file, and the convert*.m4 files " "contain the necessary conversion from the C++ parameter type to the C " "parameter type. This macro also generates doxygen documentation comments " "based on the *_docs.xml and *_docs_override." "xml files." msgstr "" "C-funktionen (t.ex. gtk_entry_set_text) beskrivs mer " "fullständigt i .defs-filen, och convert*.m4-filerna " "innehåller den nödvändiga konverteringen från C++-parametertypen till C-" "parametertypen. Detta makro genererar också doxygendokumentationskommentarer " "baserade på filerna *_docs.xml och " "*_docs_override.xml." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10501 C/index-in.docbook:10739 C/index-in.docbook:10849 msgid "refreturn" msgstr "refreturn" #. (itstool) path: listitem/para #: C/index-in.docbook:10503 #, fuzzy msgid "" "Do an extra reference() on the return value, in case " "the C function does not provide a reference." msgstr "" "Gör en extra reference() på returvärdet ifall C-" "funktionen inte tillhandahåller en referens." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10508 C/index-in.docbook:10639 msgid "errthrow [\"<exceptions>\"]" msgstr "errthrow [\"<undantag>\"]" #. (itstool) path: listitem/para #: C/index-in.docbook:10510 #, fuzzy msgid "" "Use the last GError** parameter of the C function to throw an exception. The " "optional \"<exceptions>\" is a comma-separated list of exceptions that " "can be thrown. It determines which @throws Doxygen commands are added to the " "documentation. Default value is Glib::Error. If you " "want a comma in the description of an exception, precede it by a backslash. " "Example: errthrow \"Glib::OptionError Hello\\, world, Glib::" "ConvertError\"" msgstr "" "Använd den sista GError**-parametern i C-funktionen för att kasta ett " "undantag. Den valfria \"<undantag>\" är en kommaseparerad lista över " "undantag som kan kastas. Det avgör vilka @throws-Doxygenkommandon som läggs " "till i dokumentationen. Standardvärdet är Glib::Error. Om du vill ha ett komma i beskrivningen av ett undantag föregår " "du det med ett bakstreck. Exempel: errthrow \"Glib::OptionError " "Hello\\, world, Glib::ConvertError\"" #. (itstool) path: varlistentry/term #: C/index-in.docbook:10521 C/index-in.docbook:10747 C/index-in.docbook:10814 #: C/index-in.docbook:11057 msgid "deprecated [\"<text>\"]" msgstr "deprecated [\"<text>\"]" #. (itstool) path: listitem/para #: C/index-in.docbook:10523 C/index-in.docbook:10749 C/index-in.docbook:10816 #: C/index-in.docbook:11059 msgid "" "Puts the generated code in #ifdef blocks. Text about the deprecation can be " "specified as an optional parameter." msgstr "" "Stoppar den genererade koden i #ifdef-block. Text om föråldringen kan anges " "som en valfri parameter." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10529 msgid "ignore_deprecations" msgstr "ignore_deprecations" #. (itstool) path: listitem/para #: C/index-in.docbook:10531 msgid "" "Puts the generated code in the .cc file in a " "G_GNUC_BEGIN_IGNORE_DEPRECATIONS / G_GNUC_END_IGNORE_DEPRECATIONS block. " "(Only in glibmm >= 2.70.1)" msgstr "" "Stoppar den genererade koden i .cc-filen i ett " "G_GNUC_BEGIN_IGNORE_DEPRECATIONS / G_GNUC_END_IGNORE_DEPRECATIONS-block. " "(Endast i glibmm >= 2.70.1)" #. (itstool) path: varlistentry/term #: C/index-in.docbook:10537 msgid "constversion" msgstr "constversion" #. (itstool) path: listitem/para #: C/index-in.docbook:10539 #, fuzzy msgid "" "Just call the non-const version of the same function, instead of generating " "almost duplicate code." msgstr "" "Anropa helt enkelt den icke-konstanta versionen av samma funktion i stället " "för att generera nästan identisk kod." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10544 C/index-in.docbook:10652 C/index-in.docbook:10754 #: C/index-in.docbook:10821 C/index-in.docbook:11064 msgid "newin \"<version>\"" msgstr "newin \"<version>\"" #. (itstool) path: listitem/para #: C/index-in.docbook:10546 C/index-in.docbook:10654 C/index-in.docbook:10756 #: C/index-in.docbook:10823 C/index-in.docbook:11066 #, fuzzy msgid "" "Adds a @newin Doxygen command to the documentation, or replaces the @newin " "command generated from the C documentation." msgstr "" "Lägger till ett @newin-Doxygenkommando till dokumentationen, eller ersätter " "@newin-kommandot som genererats från C-dokumentationen." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10551 C/index-in.docbook:10761 C/index-in.docbook:10896 #: C/index-in.docbook:10984 msgid "ifdef <identifier>" msgstr "ifdef <identifierare>" #. (itstool) path: listitem/para #: C/index-in.docbook:10553 C/index-in.docbook:10763 C/index-in.docbook:10898 #: C/index-in.docbook:10986 msgid "Puts the generated code in #ifdef blocks." msgstr "Stoppar den genererade koden i #ifdef-block." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10557 C/index-in.docbook:10902 msgid "slot_name <parameter_name>" msgstr "slot_name <parameternamn>" #. (itstool) path: listitem/para #: C/index-in.docbook:10559 C/index-in.docbook:10904 #, fuzzy msgid "" "Specifies the name of the slot parameter of the method, if it has one. This " "enables gmmproc to generate code to copy the slot and " "pass the copy on to the C function in its final gpointer user_data parameter. The slot_callback option must also be " "used to specify the name of the glue callback function to also pass on to " "the C function." msgstr "" "Anger namnet på fackparametern för metoden om den har någon. Detta låter " "gmmproc generera kod för att kopiera facket och skicka " "kopian till C-funktionen i dess sista gpointer user_data-" "parameter. Alternativet slot_callback måste också " "användas för att ange namnet på limåteranropsfunktionen att också skicka " "till C-funktionen." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10569 C/index-in.docbook:10914 msgid "slot_callback <function_name>" msgstr "slot_callback <funktionsnamn>" #. (itstool) path: listitem/para #: C/index-in.docbook:10571 C/index-in.docbook:10916 #, fuzzy msgid "" "Used in conjunction with the slot_name option to specify " "the name of the glue callback function that handles extracting the slot and " "then calling it. The address of this callback is also passed on to the C " "function that the method wraps." msgstr "" "Används tillsammans med alternativet slot_name för att " "ange namnet på limåteranropsfunktionen som hanterar extrahering av facket " "och sedan anropar det. Adressen för detta återanrop skickas också till C-" "funktionen som metoden omsluter." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10579 C/index-in.docbook:10924 msgid "no_slot_copy" msgstr "no_slot_copy" #. (itstool) path: listitem/para #: C/index-in.docbook:10581 C/index-in.docbook:10926 #, fuzzy msgid "" "Tells gmmproc not to pass a copy of the slot to the C " "function, if the method has one. Instead the slot itself is passed. The slot " "parameter name and the glue callback function must have been specified with " "the slot_name and slot_callback " "options respectively." msgstr "" "Säger till gmmproc att inte skicka en kopia av facket " "till C-funktionen, om metoden har en. I stället skickas facket självt. " "Fackparameternamnet och limåteranropsfunktionen måste ha angivits med " "alternativen slot_name respektive slot_callback." #. (itstool) path: section/para #: C/index-in.docbook:10498 C/index-in.docbook:10636 C/index-in.docbook:10709 #: C/index-in.docbook:10811 C/index-in.docbook:10846 C/index-in.docbook:11002 msgid "There are some optional extra arguments: <_:variablelist-1/>" msgstr "Det finns några valfria extra argument: <_:variablelist-1/>" #. (itstool) path: listitem/para #: C/index-in.docbook:10594 #, fuzzy msgid "" "Objects used via RefPtr: Pass the RefPtr as a const reference. For instance, const Glib::RefPtr<" "Gtk::FileFilter>& filter." msgstr "" "Objekt använda via RefPtr: Skicka RefPtr som en const-referens. Till exempel, const Glib::RefPtr<" "Gtk::FileFilter>& filter." #. (itstool) path: listitem/para #: C/index-in.docbook:10598 #, fuzzy msgid "" "Const Objects used via RefPtr: If the object should " "not be changed by the function, then make sure that the object is const, " "even if the RefPtr is already const. For instance, " "const Glib::RefPtr<const Gtk::FileFilter>& filter." msgstr "" "Const-objekt som används via RefPtr: Om objektet inte " "ska ändras av funktionen ser du till att objektet är const, även om " "RefPtr-pekaren redan är const. Till exempel, " "const Glib::RefPtr<const Gtk::FileFilter>& filter." #. (itstool) path: listitem/para #: C/index-in.docbook:10603 #, fuzzy msgid "" "Wrapping GList* and GSList* " "parameters: First, you need to discover what objects are contained in the " "list's data field for each item, usually by reading the documentation for " "the C function. The list can then be wrapped by a std::vector type. For instance, std::vector<Glib::RefPtr<Gdk::" "Pixbuf>>. You may need to define a Traits type to specify how " "the C and C++ types should be converted." msgstr "" "Omsluta GList*- och GSList*-" "parametrar: Först behöver du upptäcka vilka objekt som innehålls i listans " "datafält för varje objekt, vanligen genom att läsa dokumentationen för C-" "funktionen. Listan kan sedan omslutas av en std::vector-typ. Till exempel, std::vector<Glib::RefPtr<Gdk::" "Pixbuf>>. Du kan behöva definiera en Traits-typ för att ange " "hur C- och C++-typerna ska konverteras." #. (itstool) path: listitem/para #: C/index-in.docbook:10611 #, fuzzy msgid "" "Wrapping GList* and GSList* " "return types: You must discover whether the caller should free the list and " "whether it should release the items in the list, again by reading the " "documentation of the C function. With this information you can choose the " "ownership (none, shallow or deep) for the m4 conversion rule, which you " "should probably put directly into the .hg file because the ownership depends " "on the function rather than the type. For instance:" msgstr "" "Omsluta GList*- och GSList*-" "returtyper: Du måste upptäcka huruvida anroparen ska frigöra listan och " "huruvida den ska släppa objekten i listan, igen genom att läsa " "dokumentationen för C-funktionen. Med denna information kan du välja " "ägarskapet (none, shallow eller deep) för m4-konverteringsregeln, vilket du " "troligen ska stoppa direkt i .hg-filen för ägarskapet beror på funktionen " "snarare än typen. Till exempel: <_:programlisting-1/>" #. (itstool) path: listitem/programlisting #: C/index-in.docbook:10619 #, no-wrap msgid "#m4 _CONVERSION(`GSList*',`std::vector<Widget*>',`Glib::SListHandler<Widget*>::slist_to_vector($3, Glib::OWNERSHIP_SHALLOW)')" msgstr "#m4 _CONVERSION(`GSList*',`std::vector<Widget*>',`Glib::SListHandler<Widget*>::slist_to_vector($3, Glib::OWNERSHIP_SHALLOW)')" #. (itstool) path: section/para #: C/index-in.docbook:10590 #, fuzzy msgid "" "Selecting which C++ types should be used is also important when wrapping C " "API. Though it's usually obvious what C++ types should be used in the C++ " "method, here are some hints: <_:itemizedlist-1/>" msgstr "" "Att välja vilka C++-typer som ska användas är också viktigt när C-API " "omsluts. Även om det vanligen är uppenbart vilka C++-typer som ska användas " "i C++-metoden så kommer några tips här: <_:itemizedlist-1/>" #. (itstool) path: section/title #: C/index-in.docbook:10625 msgid "_WRAP_METHOD_DOCS_ONLY" msgstr "_WRAP_METHOD_DOCS_ONLY" #. (itstool) path: section/para #: C/index-in.docbook:10627 #, fuzzy msgid "" "This macro is like _WRAP_METHOD(), but it generates " "only the documentation for a C++ method that wraps a C function. Use this " "when you must hand-code the method, but you want to use the documentation " "that would be generated if the method was generated." msgstr "" "Detta makro är som _WRAP_METHOD(), men genererar bara " "dokumentationen för en C++-metod som omsluter en C-funktion. Använd detta " "när du måste handkoda metoden, men vill använda dokumentationen som skulle " "genereras om metoden var genererad." #. (itstool) path: section/para #: C/index-in.docbook:10631 msgid "_WRAP_METHOD_DOCS_ONLY(C function name)" msgstr "_WRAP_METHOD_DOCS_ONLY(C-funktionsnamn)" #. (itstool) path: section/para #: C/index-in.docbook:10632 msgid "For instance, from recentinfo.hg:" msgstr "Till exempel, från recentinfo.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10633 #, no-wrap msgid "" "\n" "_WRAP_METHOD_DOCS_ONLY(gtk_recent_info_get_applications)\n" msgstr "" "\n" "_WRAP_METHOD_DOCS_ONLY(gtk_recent_info_get_applications)\n" #. (itstool) path: listitem/para #: C/index-in.docbook:10641 #, fuzzy msgid "" "Excludes documentation of the last GError** parameter of the C function. The " "optional \"<exceptions>\" is a comma-separated list of exceptions that " "can be thrown. It determines which @throws Doxygen commands are added to the " "documentation. Default value is Glib::Error. If you " "want a comma in the description of an exception, precede it by a backslash. " "Example: errthrow \"Glib::OptionError Hello\\, world, Glib::" "ConvertError\"" msgstr "" "Exkluderar dokumentationen för den sista GError**-parametern i C-funktionen. " "Den valfria \"<undantag>\" är en kommaseparerad lista över undantag " "som kan kastas. Det avgör vilka @throws-Doxygenkommandon som läggs till i " "dokumentationen. Standardvärdet är Glib::Error. Om du " "vill ha ett komma i beskrivningen av ett undantag föregår du det med ett " "bakstreck. Exempel: errthrow \"Glib::OptionError Hello\\, world, Glib::" "ConvertError\"" #. (itstool) path: varlistentry/term #: C/index-in.docbook:10659 msgid "voidreturn" msgstr "voidreturn" #. (itstool) path: listitem/para #: C/index-in.docbook:10661 #, fuzzy msgid "" "Don't include a @return Doxygen command in the documentation. Useful if the " "wrapped C function returns a value, but the corresponding C++ method returns " "void." msgstr "" "Inkludera inte ett @return-Doxygenkommando i dokumentationen. Användbart om " "den omslutna C-funktionen returnerar ett värde, men den motsvarande C++-" "metoden returnerar void." #. (itstool) path: section/title #: C/index-in.docbook:10671 msgid "_IGNORE, _IGNORE_SIGNAL, _IGNORE_PROPERTY" msgstr "_IGNORE, _IGNORE_SIGNAL, _IGNORE_PROPERTY" #. (itstool) path: section/para #: C/index-in.docbook:10673 #, fuzzy msgid "" "gmmproc will warn you on stdout about functions, signals, " "properties and child properties that you have forgotten to wrap, helping to " "ensure that you are wrapping the complete API. But if you don't want to wrap " "some functions, signals, properties or child properties, or if you chose to " "hand-code some methods then you can use the _IGNORE(), _IGNORE_SIGNAL() or " "_IGNORE_PROPERTY() macro to make gmmproc stop complaining." msgstr "" "gmmproc kommer varna dig på standard ut om funktioner, " "signaler, egenskaper och underordnade egenskaper som du glömt bort att " "omsluta, vilket hjälper till att säkerställa att du omsluter hela API:t. Men " "om du inte vill omsluta några funktioner, signaler, egenskaper eller " "underordnade egenskaper, eller om du väljer att handkoda vissa metoder, så " "kan du använda makrona _IGNORE(), _IGNORE_SIGNAL() eller _IGNORE_PROPERTY() " "för att få gmmproc att sluta klaga." #. (itstool) path: para/literallayout #: C/index-in.docbook:10681 #, no-wrap msgid "" "_IGNORE(C function name 1, C function name 2, etc)\n" "_IGNORE_SIGNAL(C signal name 1, C signal name 2, etc)\n" "_IGNORE_PROPERTY(C property name 1, C property name 2, etc)" msgstr "" "_IGNORE(C-funktionsnamn 1, C-funktionsnamn 2, o.s.v.)\n" "_IGNORE_SIGNAL(C-signalnamn 1, C-signalnamn 2, o.s.v.)\n" "_IGNORE_PROPERTY(C-egenskapsnamn 1, C-egenskapsnamn 2, o.s.v.)" #. (itstool) path: section/para #: C/index-in.docbook:10685 msgid "For instance, from flowbox.hg:" msgstr "Till exempel, från flowbox.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10686 #, no-wrap msgid "" "\n" "_IGNORE(gtk_flow_box_set_filter_func, gtk_flow_box_set_sort_func)\n" "_IGNORE_SIGNAL(activate-cursor-child, toggle-cursor-child, move-cursor)\n" msgstr "" "\n" "_IGNORE(gtk_flow_box_set_filter_func, gtk_flow_box_set_sort_func)\n" "_IGNORE_SIGNAL(activate-cursor-child, toggle-cursor-child, move-cursor)\n" #. (itstool) path: section/title #: C/index-in.docbook:10693 msgid "_WRAP_SIGNAL" msgstr "_WRAP_SIGNAL" #. (itstool) path: section/para #: C/index-in.docbook:10695 #, fuzzy msgid "" "This macro generates the C++ libsigc++-style signal to wrap a C GObject " "signal. It actually generates a public accessor method, such as " "signal_clicked(), which returns a proxy object. " "gmmproc uses the .defs file to discover the C parameter " "types and the .m4 convert files to discover appropriate type conversions." msgstr "" "Detta makro genererar C++-signalen av libsigc++-stil som ska omsluta en C " "Gobjekt-signal. Det genererar faktiskt en publik åtkomstmetod, som " "signal_clicked() vilken returnerar ett proxyobjekt. " "gmmproc använder .defs-filen för att upptäcka C-" "parametertyperna och .m4-konverteringsfilerna för att upptäcka lämpliga " "typkonverteringar." #. (itstool) path: section/para #: C/index-in.docbook:10701 msgid "" "_WRAP_SIGNAL( C++ signal handler signature, C signal name)" msgstr "" "_WRAP_SIGNAL( C++-signalhanterarsignatur, C-signalnamn)" #. (itstool) path: section/programlisting #: C/index-in.docbook:10703 #, no-wrap msgid "" "\n" "_WRAP_SIGNAL(void clicked(),\"clicked\")\n" msgstr "" "\n" "_WRAP_SIGNAL(void clicked(),\"clicked\")\n" #. (itstool) path: section/para #: C/index-in.docbook:10706 #, fuzzy msgid "" "Signals usually have function pointers in the GTK struct, with a " "corresponding enum value and a g_signal_new() in the .c " "file." msgstr "" "Signaler har vanligen funktionspekare i GTK-structen, med ett motsvarande " "uppräkningsvärde och en g_signal_new() i .c-fil." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10712 msgid "no_default_handler" msgstr "no_default_handler" #. (itstool) path: listitem/para #: C/index-in.docbook:10714 msgid "" "Do not generate an on_something() virtual method to " "allow easy overriding of the default signal handler. Use this when adding a " "signal with a default signal handler would break the ABI by increasing the " "size of the class's virtual function table, and when adding a signal without " "a public C default handler." msgstr "" "Generera inte en virtuell metod on_something() för att " "tillåta enkel åsidosättning av standardsignalhanteraren. Använd detta när " "tillägg av en signal med en standardsignalhanterare skulle bryta ABI:t genom " "att öka storleken på klassens virtuella funktionstabell, och vid tillägg av " "en signal utan en öppen C-standardhanterare." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10723 msgid "custom_default_handler" msgstr "custom_default_handler" #. (itstool) path: listitem/para #: C/index-in.docbook:10725 #, fuzzy msgid "" "Generate a declaration of the on_something() virtual " "method in the .h file, but do not generate a definition " "in the .cc file. Use this when you must generate the " "definition by hand." msgstr "" "Generera en deklaration av den virtuella metoden on_something() i .h-filen, men generera inte någon " "definition i .cc-filen. Använd detta då du måste " "generera definitionen för hand." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10732 msgid "custom_c_callback" msgstr "custom_c_callback" #. (itstool) path: listitem/para #: C/index-in.docbook:10734 msgid "" "Do not generate a C callback function for the signal. Use this when you must " "generate the callback function by hand." msgstr "" "Generera inte en C-återanropsfunktion för signalen. Använd detta när du " "måste generera återanropsfunktionen för hand." #. (itstool) path: listitem/para #: C/index-in.docbook:10741 #, fuzzy msgid "" "Do an extra reference() on the return value of the " "on_something() virtual method, in case the C function " "does not provide a reference." msgstr "" "Gör en extra reference() på returvärdet för den " "virtuella metoden on_something(), ifall C-funktionen " "inte tillhandahåller en referens." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10767 C/index-in.docbook:10950 msgid "exception_handler <method_name>" msgstr "exception_handler <metodnamn>" #. (itstool) path: listitem/para #: C/index-in.docbook:10769 C/index-in.docbook:10952 #, fuzzy msgid "" "Allows to use custom exception handler instead of default one. Exception " "might be rethrown by user-defined handler, and it will be caught by default " "handler." msgstr "" "Tillåter användning av anpassad undantagshanterare i stället för den som är " "standard. Undantag kan kastas igen av användardefinierade hanteraren och " "kommer fångas av standardhanteraren." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10775 msgid "detail_name <parameter_name>" msgstr "detail_name <parameternamn>" #. (itstool) path: listitem/para #: C/index-in.docbook:10777 #, fuzzy msgid "" "Adds a const Glib::ustring& parameter to the " "signal_something() method. Use it, if the signal " "accepts a detailed signal name, i.e. if the underlying C code registers the " "signal with the G_SIGNAL_DETAILED flag." msgstr "" "Lägger till en const Glib::ustring&-parameter till " "signal_something()-metoden. Använd det om signalen " "accepterar ett detaljerat signalnamn, det vill säga om den underliggande C-" "koden registrerar signalen med flaggan G_SIGNAL_DETAILED." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10784 msgid "two_signal_methods" msgstr "two_signal_methods" #. (itstool) path: listitem/para #: C/index-in.docbook:10786 #, fuzzy msgid "" "Used in conjunction with the detail_name option to " "generate two signal_something() methods, one " "without a parameter and one with a parameter without a default value. With " "only the detail_name option one method is generated, with " "a parameter with default value. Use the two_signal_methods option, if it's necessary in order to preserve ABI." msgstr "" "Används tillsammans med alternativet detail_name för att " "generera två signal_something()-metoder, en utan " "någon parameter och en med en parameter utan något standardvärde. Med endast " "alternativet detail_name genereras en metod, med en " "parameter med standardvärde. Använda alternativet " "two_signal_methods om det är nödvändigt för att bevara " "ABI." #. (itstool) path: section/title #: C/index-in.docbook:10800 msgid "_WRAP_PROPERTY" msgstr "_WRAP_PROPERTY" #. (itstool) path: section/para #: C/index-in.docbook:10802 #, fuzzy msgid "" "This macro generates the C++ method to wrap a C GObject property. You must " "specify the property name and the wanted C++ type for the property. " "gmmproc uses the .defs file to discover the C type and " "the .m4 convert files to discover appropriate type conversions." msgstr "" "Detta makro genererar C++-metoden som ska omsluta en C GObject-egenskap. Du " "måste ange egenskapsnamnet och den önskade C++-typen för egenskapen. " "gmmproc använder .defs-filen för att upptäcka C-typen " "och .m4-konverteringsfilerna för att upptäcka lämpliga typkonverteringar." #. (itstool) path: section/para #: C/index-in.docbook:10806 msgid "_WRAP_PROPERTY(C property name, C++ type)" msgstr "_WRAP_PROPERTY(C-egenskapsnamn, C++-typ)" #. (itstool) path: section/programlisting #: C/index-in.docbook:10808 #, no-wrap msgid "" "\n" "_WRAP_PROPERTY(\"label\", Glib::ustring)\n" msgstr "" "\n" "_WRAP_PROPERTY(\"label\", Glib::ustring)\n" #. (itstool) path: section/title #: C/index-in.docbook:10832 msgid "_WRAP_VFUNC" msgstr "_WRAP_VFUNC" #. (itstool) path: section/para #: C/index-in.docbook:10834 #, fuzzy msgid "This macro generates the C++ method to wrap a virtual C function." msgstr "" "Detta makro genererar C++-metoden som ska omsluta en virtuell C-funktion." #. (itstool) path: section/para #: C/index-in.docbook:10835 msgid "" "_WRAP_VFUNC( C++ method signature, C function name)" msgstr "_WRAP_VFUNC( C++-metodsignatur, C-funktionsnamn)" #. (itstool) path: section/para #: C/index-in.docbook:10836 msgid "For instance, from widget.hg:" msgstr "Till exempel, från widget.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10837 #, no-wrap msgid "" "\n" "_WRAP_VFUNC(SizeRequestMode get_request_mode() const, get_request_mode)\n" msgstr "" "\n" "_WRAP_VFUNC(SizeRequestMode get_request_mode() const, get_request_mode)\n" #. (itstool) path: section/para #: C/index-in.docbook:10840 #, fuzzy msgid "" "The C function (e.g. get_request_mode) is described " "more fully in the *_vfuncs.defs file, and the " "convert*.m4 files contain the necessary conversion from " "the C++ parameter type to the C parameter type. Conversions can also be " "written in the .hg file. Virtual functions often require special conversions " "that are best kept local to the .hg file where they are used." msgstr "" "C-funktionen (t.ex. get_request_mode) beskrivs mer " "fullständigt i filen *_vfuncs.defs, och " "convert*.m4-filerna innehåller den nödvändiga " "konverteringen från C++-parametertypen till C-parametertypen. Konverteringar " "kan också skrivas i .hg-filen. Virtuella funktioner kräver ofta speciella " "konverteringar som är bästa att hålla lokala till .hg-filen där de används." #. (itstool) path: listitem/para #: C/index-in.docbook:10851 #, fuzzy msgid "" "Do an extra reference() on the return value of the " "something_vfunc() function, in case the virtual C " "function does not provide a reference." msgstr "" "Gör en extra reference() på returvärdet för funktionen " "something_vfunc(), ifall den virtuella C-funktionen " "inte tillhandahåller en referens." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10857 msgid "refreturn_ctype" msgstr "refreturn_ctype" #. (itstool) path: listitem/para #: C/index-in.docbook:10859 #, fuzzy msgid "" "Do an extra reference() on the return value of an " "overridden something_vfunc() function in the C callback " "function, in case the calling C function expects it to provide a reference." msgstr "" "Gör en extra reference() på returvärdet för en " "åsidosatt something_vfunc()-funktion i C-" "återanropsfunktionen, ifall den anropande C-funktionen förväntar sig att den " "ska tillhandahålla en referens." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10866 msgid "keep_return" msgstr "keep_return" #. (itstool) path: listitem/para #: C/index-in.docbook:10868 #, fuzzy msgid "" "Keep a copy of the return value in the C callback function, in case the " "calling C function does not expect to get its own reference." msgstr "" "Behåll en kopia av returvärdet i C-återanropsfunktionen, ifall den anropande " "C-funktionen inte förväntar sig att få sin egen referens." #. (itstool) path: listitem/para #: C/index-in.docbook:10876 #, fuzzy msgid "" "Use the last GError** parameter of the C virtual function (if there is one) " "to throw an exception." msgstr "" "Använd den sista GError**-parametern i den virtuella C-funktionen (om det " "finns någon) för att kasta ett undantag." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10881 msgid "custom_vfunc" msgstr "custom_vfunc" #. (itstool) path: listitem/para #: C/index-in.docbook:10883 #, fuzzy msgid "" "Do not generate a definition of the vfunc in the .cc " "file. Use this when you must generate the vfunc by hand." msgstr "" "Generera inte en definition av vfunc i .cc-filen. " "Använd detta när du måste generera vfunc för hand." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10889 msgid "custom_vfunc_callback" msgstr "custom_vfunc_callback" #. (itstool) path: listitem/para #: C/index-in.docbook:10891 #, fuzzy msgid "" "Do not generate a C callback function for the vfunc. Use this when you must " "generate the callback function by hand." msgstr "" "Generera en C-återanropsfunktion för din vfunc. Använd denna när du måste " "generera återanropsfunktionen för hand." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10934 msgid "return_value <value>" msgstr "return_value <värde>" #. (itstool) path: listitem/para #: C/index-in.docbook:10936 msgid "Defines a non-default return value." msgstr "Definierar ett annat returvärde än standardvärdet." #. (itstool) path: varlistentry/term #: C/index-in.docbook:10940 msgid "err_return_value <value>" msgstr "err_return_value <värde>" #. (itstool) path: listitem/para #: C/index-in.docbook:10942 #, fuzzy msgid "" "Defines a non-default return value, used only if the C++ " "something_vfunc() function throws an exception which is " "propagated to the C callback function. If return_value is specified, but " "err_return_value is not, then return_value is used also when an exception is " "propagated." msgstr "" "Definierar ett annat returvärde än standardvärdet, används endast om C++-" "funktionen something_vfunc() kastar ett undantag som " "sprids till C-återanropsfunktionen. Om return_value anges, men inte " "err_return_value, så kommer return_value användas även när ett undantag " "sprids." #. (itstool) path: section/para #: C/index-in.docbook:10959 #, fuzzy msgid "" "A rule to which there may be exceptions: If the virtual C function returns a " "pointer to an object derived from GObject, i.e. a " "reference-counted object, then the virtual C++ function shall return a " "Glib::RefPtr<> object. One of the extra " "arguments refreturn or refreturn_ctype is required." msgstr "" "En regel till vilken det kan finnas undantag: Om den virtuella C-funktionen " "returnerar en pekare till ett härlett från GObject, " "det vill säga ett referensräknat objekt så ska den virtuella C++-funktionen " "returnera ett Glib::RefPtr<>-objekt. Ett av de " "extra argumenten refreturn eller " "refreturn_ctype krävs." #. (itstool) path: section/title #: C/index-in.docbook:10970 msgid "Other macros" msgstr "Andra makron" #. (itstool) path: section/title #: C/index-in.docbook:10973 msgid "_IMPLEMENTS_INTERFACE" msgstr "_IMPLEMENTS_INTERFACE" #. (itstool) path: section/para #: C/index-in.docbook:10975 msgid "This macro generates initialization code for the interface." msgstr "Detta makro genererar initieringskod för gränssnittet." #. (itstool) path: section/para #: C/index-in.docbook:10976 msgid "_IMPLEMENTS_INTERFACE(C++ interface name)" msgstr "_IMPLEMENTS_INTERFACE(C++-gränssnittsnamn)" #. (itstool) path: section/para #: C/index-in.docbook:10977 msgid "For instance, from grid.hg:" msgstr "Till exempel, från grid.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10978 #, no-wrap msgid "" "\n" "_IMPLEMENTS_INTERFACE(Orientable)\n" msgstr "" "\n" "_IMPLEMENTS_INTERFACE(Orientable)\n" #. (itstool) path: section/para #: C/index-in.docbook:10981 msgid "There is one optional extra argument: <_:variablelist-1/>" msgstr "Det finns ett valfritt extra argument: <_:variablelist-1/>" #. (itstool) path: section/title #: C/index-in.docbook:10994 msgid "_WRAP_ENUM" msgstr "_WRAP_ENUM" #. (itstool) path: section/para #: C/index-in.docbook:10996 #, fuzzy msgid "" "This macro generates a C++ enum to wrap a C enum. You must specify the " "desired C++ name and the name of the underlying C enum." msgstr "" "Detta makro genererar en C++-uppräkning för att omsluta en C-uppräkning. Du " "måste ange det önskade C++-namnet och namnet för den underliggande C-" "uppräkningen." #. (itstool) path: section/para #: C/index-in.docbook:10998 msgid "For instance, from enums.hg:" msgstr "Till exempel, från enums.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:10999 #, no-wrap msgid "" "\n" "_WRAP_ENUM(Orientation, GtkOrientation)\n" msgstr "" "\n" "_WRAP_ENUM(Orientation, GtkOrientation)\n" #. (itstool) path: varlistentry/term #: C/index-in.docbook:11005 msgid "NO_GTYPE" msgstr "NO_GTYPE" #. (itstool) path: listitem/para #: C/index-in.docbook:11007 #, fuzzy msgid "" "Use this option, if the enum is not a GType. This is " "the case when there is no *_get_type() function for the " "C enum, but be careful that you don't just need to include an extra header " "for that function. You should also file a bug against the C API, because all " "enums should be registered as GTypes." msgstr "" "Använd detta alternativ om uppräkningen inte är en GType. Detta är fallet när det inte finns någon *_get_type()-funktion för C-uppräkningen, men var försiktig så att du inte vara " "behöver inkludera en extra header för den funktionen. Du bör också " "rapportera ett fel mot C-API:t, för alla uppräkningar ska registreras som " "GType-typer." #. (itstool) path: listitem/para #: C/index-in.docbook:11012 #, fuzzy msgid "" "If you specify NO_GTYPE, don't use that enum as the type " "in _WRAP_PROPERTY. It would cause a runtime error, when the generated " "property_*() method is called." msgstr "" "Om du anger NO_GTYPE, använd inte den uppräkningen som " "typen i _WRAP_PROPERTY. Det skulle orsaka ett körtidsfel, när den genererade " "property_*()-metoden anropas." #. (itstool) path: listitem/para #: C/index-in.docbook:11015 msgid "For example, from icontheme.hg:" msgstr "Till exempel, från icontheme.hg:" #. (itstool) path: listitem/programlisting #: C/index-in.docbook:11016 #, no-wrap msgid "" "\n" "_WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE)\n" " " msgstr "" "\n" "_WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE)\n" " " #. (itstool) path: varlistentry/term #: C/index-in.docbook:11022 #, fuzzy msgid "gtype_func <function_name>" msgstr "gtype_func <funktionsnamn>" #. (itstool) path: listitem/para #: C/index-in.docbook:11024 #, fuzzy msgid "" "Specifies the name of the *_get_type() function for the " "C enum. Use this parameter if gmmproc can't deduce the " "correct function name from the name of the C enum type." msgstr "" "Anger namnet på *_get_type()-funktionen för C-" "uppräkningen. Använd denna parameter om gmmproc inte kan " "räkna ut det rätta funktionsnamnet från namnet för C-uppräkningstypen." #. (itstool) path: listitem/para #: C/index-in.docbook:11027 msgid "For example, from dbusproxy.hg in glibmm:" msgstr "Till exempel, från dbusproxy.hg i glibmm:" #. (itstool) path: listitem/programlisting #: C/index-in.docbook:11028 #, no-wrap msgid "" "\n" "_WRAP_ENUM(ProxyFlags, GDBusProxyFlags, gtype_func g_dbus_proxy_flags_get_type)\n" " " msgstr "" "\n" "_WRAP_ENUM(ProxyFlags, GDBusProxyFlags, gtype_func g_dbus_proxy_flags_get_type)\n" " " #. (itstool) path: varlistentry/term #: C/index-in.docbook:11034 msgid "CONV_TO_INT" msgstr "CONV_TO_INT" #. (itstool) path: listitem/para #: C/index-in.docbook:11036 #, fuzzy msgid "" "\"Convertible to int.\" Generates a plain enum (not an enum class) within a " "class. Such an enum is scoped like an enum class, but unlike an enum class, " "it can be implicitly converted to int." msgstr "" "\"Convertible to int.\" Genererar en vanlig uppräkning (inte en " "uppräkningsklass) i en klass. En sådan uppräckning har räckvidd som en " "uppräkningsklass, men till skillnad från en uppräkningsklass kan den " "implicit konverteras till int." #. (itstool) path: listitem/para #: C/index-in.docbook:11039 msgid "For example, from dialog.hg:" msgstr "Till exempel, från dialog.hg:" #. (itstool) path: listitem/programlisting #: C/index-in.docbook:11040 #, no-wrap msgid "" "\n" "_WRAP_ENUM(ResponseType, GtkResponseType, CONV_TO_INT)\n" " " msgstr "" "\n" "_WRAP_ENUM(ResponseType, GtkResponseType, CONV_TO_INT)\n" " " #. (itstool) path: varlistentry/term #: C/index-in.docbook:11046 #, fuzzy msgid "s#<from>#<to>#" msgstr "s#<från>#<till>#" #. (itstool) path: listitem/para #: C/index-in.docbook:11048 #, fuzzy msgid "" "Substitutes (part of) the name of one or more enum constants. You can add " "any number of substitutions." msgstr "" "Ersätter (en del av) namnet på en eller flera uppräkningskonstanter. Du kan " "lägga till valfritt antal ersättningar." #. (itstool) path: listitem/para #: C/index-in.docbook:11050 msgid "For example, from iochannel.hg in glibmm:" msgstr "Till exempel, från iochannel.hg i glibmm:" #. (itstool) path: listitem/programlisting #: C/index-in.docbook:11051 #, fuzzy, no-wrap msgid "" "\n" "_WRAP_ENUM(SeekType, GSeekType, NO_GTYPE, s#^SEEK_#SEEK_TYPE_#)\n" " " msgstr "" "\n" "_WRAP_ENUM(SeekType, GSeekType, NO_GTYPE, s#^SEEK_#SEEK_TYPE_#)\n" " " #. (itstool) path: section/title #: C/index-in.docbook:11075 msgid "_WRAP_ENUM_DOCS_ONLY" msgstr "_WRAP_ENUM_DOCS_ONLY" #. (itstool) path: section/para #: C/index-in.docbook:11077 #, fuzzy msgid "" "This macro just generates a Doxygen documentation block for the enum. This " "is useful for enums that can't be wrapped with _WRAP_ENUM() because they are complexly defined (maybe using C macros) but " "including the generated enum documentation is still desired. It is used with " "the same syntax as _WRAP_ENUM() and also processes the " "same options (though NO_GTYPE, gtype_func <function_name> and " "CONV_TO_INT are ignored because they make no difference when just generating " "the enum's documentation)." msgstr "" "Detta makro genererar bara ett Doxygen-dokumentationsblock för uppräkningen. " "Detta är användbart för uppräkningar som inte kan omslutas med " "_WRAP_ENUM() för att de är komplext definierade (kanske " "med C-makron) men att det fortfarande är önskvärt att inkludera den " "genererade uppräkningsdokumentationen. Det används med samma syntax som " "_WRAP_ENUM() och bearbetar även samma alternativ (även " "om NO_GTYPE, gtype_func <funktionsnamn> och CONV_TO_INT ignoreras för " "att de inte gör någon skillnad på bara uppräkningens dokumentation " "genereras)." #. (itstool) path: section/title #: C/index-in.docbook:11089 msgid "_WRAP_GERROR" msgstr "_WRAP_GERROR" #. (itstool) path: section/para #: C/index-in.docbook:11091 #, fuzzy msgid "" "This macro generates a C++ exception class, derived from Glib::" "Error, with a Code enum and a code() method. You must specify the desired C++ name, the name of the " "corresponding C enum, and the prefix for the C enum values." msgstr "" "Detta makro genererar en C++-undantagsklass, härledd från Glib::" "Error med en Code-uppräkning och en metod " "code(). Du måste ange det önskade C++-namnet, " "namnet på den motsvarande C-uppräkningen, och prefixet för C-" "uppräkningsvärdena." #. (itstool) path: section/para #: C/index-in.docbook:11094 #, fuzzy msgid "" "This exception can then be thrown by methods which are generated from " "_WRAP_METHOD() with the errthrow option." msgstr "" "Detta undantag kan sedan kastas av metoder som genereras från _WRAP_METHOD() " "med errthrow-alternativet." #. (itstool) path: section/para #: C/index-in.docbook:11096 msgid "For instance, from pixbuf.hg:" msgstr "Till exempel, från pixbuf.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11097 #, no-wrap msgid "" "\n" "_WRAP_GERROR(PixbufError, GdkPixbufError, GDK_PIXBUF_ERROR)\n" msgstr "" "\n" "_WRAP_GERROR(PixbufError, GdkPixbufError, GDK_PIXBUF_ERROR)\n" #. (itstool) path: section/para #: C/index-in.docbook:11100 #, fuzzy msgid "" "_WRAP_GERROR() accepts the same optional arguments as _WRAP_ENUM() (though " "CONV_TO_INT is ignored because all exception class enums are plain enums " "within a class)." msgstr "" "_WRAP_GERROR() accepterar samma valfria argument som _WRAP_ENUM() (även om " "CONV_TO_INT ignoreras för att alla undantagsklassuppräkningar är vanliga " "uppräkningar i en klass)." #. (itstool) path: section/title #: C/index-in.docbook:11106 msgid "_MEMBER_GET / _MEMBER_SET" msgstr "_MEMBER_GET / _MEMBER_SET" #. (itstool) path: section/para #: C/index-in.docbook:11107 #, fuzzy msgid "" "Use these macros if you're wrapping a simple struct or boxed type that " "provides direct access to its data members, to create getters and setters " "for the data members." msgstr "" "Använd dessa makron om du omsluter en ensam struct eller boxad typ som " "tillhandahåller direkt åtkomst till sina datamedlemmar, för att skapa get- " "och set-funktioner för datamedlemmarna." #. (itstool) path: section/para #: C/index-in.docbook:11111 msgid "_MEMBER_GET(C++ name, C name, C++ type, C type)" msgstr "_MEMBER_GET(C++-namn, C-namn, C++-typ, C-typ)" #. (itstool) path: section/para #: C/index-in.docbook:11112 msgid "_MEMBER_SET(C++ name, C name, C++ type, C type)" msgstr "_MEMBER_SET(C++-namn, C-namn, C++-typ, C-typ)" #. (itstool) path: section/para #: C/index-in.docbook:11113 msgid "For example, in rectangle.hg:" msgstr "Till exempel, i rectangle.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11116 #, no-wrap msgid "_MEMBER_GET(x, x, int, int)" msgstr "_MEMBER_GET(x, x, int, int)" #. (itstool) path: section/title #: C/index-in.docbook:11120 msgid "_MEMBER_GET_PTR / _MEMBER_SET_PTR" msgstr "_MEMBER_GET_PTR / _MEMBER_SET_PTR" #. (itstool) path: section/para #: C/index-in.docbook:11121 #, fuzzy msgid "" "Use these macros to automatically provide getters and setters for a data " "member that is a pointer type. For the getter function, it will create two " "methods, one const and one non-const." msgstr "" "Använd dessa makron för att automatiskt tillhandahålla get- och set-" "funktioner för en datamedlem som är en pekartyp. För get-funktionen kommer " "det skapa två metoder, en const och en icke-const." #. (itstool) path: section/para #: C/index-in.docbook:11126 msgid "" "_MEMBER_GET_PTR(C++ name, C name, C++ type, C type)" msgstr "_MEMBER_GET_PTR(C++-namn, C-namn, C++-typ, C-typ)" #. (itstool) path: section/para #: C/index-in.docbook:11127 msgid "" "_MEMBER_SET_PTR(C++ name, C name, C++ type, C type)" msgstr "_MEMBER_SET_PTR(C++-namn, C-namn, C++-typ, C-typ)" #. (itstool) path: section/para #: C/index-in.docbook:11128 msgid "" "For example, for Pango::Analysis in item." "hg:" msgstr "" "Till exempel, för Pango::Analysis i item." "hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11130 #, no-wrap msgid "" "\n" "// _MEMBER_GET_PTR(engine_lang, lang_engine, EngineLang*, PangoEngineLang*)\n" "// It's just a comment. It's difficult to find a real-world example.\n" msgstr "" "\n" "// _MEMBER_GET_PTR(engine_lang, lang_engine, EngineLang*, PangoEngineLang*)\n" "// Det är bara en kommentar. Det är svårt att hitta ett exempel i verkligheten.\n" #. (itstool) path: section/title #: C/index-in.docbook:11137 msgid "_MEMBER_GET_GOBJECT / _MEMBER_SET_GOBJECT" msgstr "_MEMBER_GET_GOBJECT / _MEMBER_SET_GOBJECT" #. (itstool) path: section/para #: C/index-in.docbook:11138 #, fuzzy msgid "" "Use these macros to provide getters and setters for a data member that is a " "GObject type that must be referenced before being " "returned." msgstr "" "Använd dessa makron för att tillhandahålla get- och set-funktioner för en " "datamedlem som är en GObject-typ som måste refereras " "innan den returneras." #. (itstool) path: section/para #: C/index-in.docbook:11143 msgid "" "_MEMBER_GET_GOBJECT(C++ name, C name, C++ type, C type)" msgstr "" "_MEMBER_GET_GOBJECT(C++-namn, C-namn, C++-typ, C-typ)" #. (itstool) path: section/para #: C/index-in.docbook:11144 msgid "" "_MEMBER_SET_GOBJECT(C++ name, C name, C++ type, C type)" msgstr "" "_MEMBER_SET_GOBJECT(C++-namn, C-namn, C++-typ, C-typ)" #. (itstool) path: section/para #: C/index-in.docbook:11145 msgid "For example, in Pangomm, layoutline.hg:" msgstr "Till exempel, i Pangomm, layoutline.hg:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11146 #, no-wrap msgid "" "\n" "_MEMBER_GET_GOBJECT(layout, layout, Pango::Layout, PangoLayout*)\n" msgstr "" "\n" "_MEMBER_GET_GOBJECT(layout, layout, Pango::Layout, PangoLayout*)\n" #. (itstool) path: section/title #: C/index-in.docbook:11154 msgid "gmmproc Parameter Processing" msgstr "Parameterbearbetning med gmmproc" #. (itstool) path: section/para #: C/index-in.docbook:11155 #, fuzzy msgid "" "gmmproc allows processing the parameters in a method " "signature for the macros that process method signatures (like " "_WRAP_METHOD(), _WRAP_CTOR() and " "_WRAP_CREATE()) in a variety of ways:" msgstr "" "gmmproc tillåter bearbetning av parametrarna i en " "metodsignatur för makrona som bearbetar metodsignaturer (som " "_WRAP_METHOD(), _WRAP_CTOR() och " "_WRAP_CREATE()) på ett antal sätt:" #. (itstool) path: section/title #: C/index-in.docbook:11162 msgid "Parameter Reordering" msgstr "Ändra ordning på parametrar" #. (itstool) path: section/para #: C/index-in.docbook:11164 msgid "" "For all the macros that process method signatures, it is possible to specify " "a different order for the C++ parameters than the existing order in the C " "function, virtual function or signal. For example, say that the following C " "function were being wrapped as a C++ method for the Gtk::Widget class:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:11170 #, fuzzy, no-wrap msgid "" "\n" "void gtk_widget_set_device_events(GtkWidget* widget, GdkDevice* device,\n" " GdkEventMask events);\n" msgstr "" "\n" "void gtk_widget_set_device_events(GtkWidget* widget, GdkDevice* device,\n" " GdkEventMask events);\n" #. (itstool) path: section/para #: C/index-in.docbook:11174 msgid "" "However, changing the order of the C++ method's two parameters is necessary. " "Something like the following would wrap the function as a C++ method with a " "different order for the two parameters:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:11178 #, fuzzy, no-wrap msgid "" "\n" "_WRAP_METHOD(void set_device_events(Gdk::EventMask events{events},\n" " const Glib::RefPtr<const Gdk::Device>& device{device}),\n" " gtk_widget_set_device_events)\n" msgstr "" "\n" "_WRAP_METHOD(void set_device_events(Gdk::EventMask events{events},\n" " const Glib::RefPtr<const Gdk::Device>& device{device}),\n" " gtk_widget_set_device_events)\n" #. (itstool) path: section/para #: C/index-in.docbook:11183 msgid "" "The {c_param_name} following the method parameter names " "tells gmmproc to map the C++ parameter to the specified C " "parameter within the {}. Since the C++ parameter names " "correspond to the C ones, the above could be re-written as:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:11188 #, no-wrap msgid "" "\n" "_WRAP_METHOD(void set_device_events(Gdk::EventMask events{.},\n" " const Glib::RefPtr<const Gdk::Device>& device{.}),\n" " gtk_widget_set_device_events)\n" msgstr "" "\n" "_WRAP_METHOD(void set_device_events(Gdk::EventMask events{.},\n" " const Glib::RefPtr<const Gdk::Device>& device{.}),\n" " gtk_widget_set_device_events)\n" #. (itstool) path: warning/para #: C/index-in.docbook:11194 #, fuzzy msgid "" "Please note that when reordering parameters for a _WRAP_SIGNAL() method signature, the C parameter names would always be " "p0, p1, etc. because the " "generate_extra_defs utility uses those parameter names " "no matter what the C API's parameter names may be. It's how the utility is " "written presently." msgstr "" "Observera att vid ändring av ordning för parametrar för en " "_WRAP_SIGNAL()-metodsignatur skulle C-parameternamnen " "alltid vara p0, p1 och så vidare för " "verktyget generate_extra_defs använder dessa " "parameternamn oavsett vad C-API:ts parameternamn är. Det är hur verktyget är " "skrivet för tillfället." #. (itstool) path: section/title #: C/index-in.docbook:11206 msgid "Optional Parameter Processing" msgstr "Valfri parameterbearbetning" #. (itstool) path: section/para #: C/index-in.docbook:11208 #, fuzzy msgid "" "For all macros processing method signatures except _WRAP_SIGNAL() and _WRAP_VFUNC() it is also possible to make " "the parameters optional so that extra C++ methods are generated without the " "specified optional parameter. For example, say that the following " "*_new() function were being wrapped as a constructor in " "the Gtk::ToolButton class:" msgstr "" "För alla makron som bearbetar metodsignaturer förutom " "_WRAP_SIGNAL() och _WRAP_VFUNC() " "är det också möjligt att göra parametrarna valfria så att extra C++-metoder " "genereras utan den angivna valfria parametern. Om vi exempelvis säger att " "följande *_new()-funktion omslöts som en konstruktor i " "klassen Gtk::ToolButton: <_:programlisting-1/> Säg " "också att C-API:t tillät NULL för funktionens parameter label så att den parametern är valfri. Det skulle vara möjligt att få " "gmmproc att generera den ursprungliga konstruktorn (med " "alla parametrar) tillsammans med ytterligare en konstruktor utan den valfria " "parametern genom att lägga till ett {?} till " "parameternamnet så här: <_:programlisting-2/> I detta fall skulle två " "konstruktorer genereras: En med den valfria parametern och en utan den." #. (itstool) path: section/programlisting #: C/index-in.docbook:11216 #, no-wrap msgid "" "\n" "GtkToolItem* gtk_tool_button_new(GtkWidget* icon_widget, const gchar* label);\n" msgstr "" "\n" "GtkToolItem* gtk_tool_button_new(GtkWidget* icon_widget, const gchar* label);\n" #. (itstool) path: section/para #: C/index-in.docbook:11219 msgid "" "Also, say that the C API allowed NULL for the function's label parameter so that that parameter is optional. It would be " "possible to have gmmproc generate the original " "constructor (with all the parameters) along with an additional constructor " "without that optional parameter by appending a {?} to the " "parameter name like so:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:11225 #, no-wrap msgid "" "\n" "_WRAP_CTOR(ToolButton(Widget& icon_widget, const Glib::ustring& label{?}),\n" " gtk_tool_button_new)\n" msgstr "" "\n" "_WRAP_CTOR(ToolButton(Widget& icon_widget, const Glib::ustring& label{?}),\n" " gtk_tool_button_new)\n" #. (itstool) path: section/para #: C/index-in.docbook:11229 msgid "" "In this case, two constructors would be generated: One with the optional " "parameter and one without it." msgstr "" #. (itstool) path: section/title #: C/index-in.docbook:11235 #, fuzzy msgid "Output Parameter Processing" msgstr "Parameterbearbetning av utdata" #. (itstool) path: section/para #: C/index-in.docbook:11237 #, fuzzy msgid "" "With _WRAP_METHOD() it is also possible for the return " "of the wrapped C function (if it has one) to be placed in an output " "parameter of the C++ method instead of having the C++ method also return a " "value like the C function does. To do that, simply include the output " "parameter in the C++ method parameter list appending a {OUT} to the output parameter name. For example, if " "gtk_widget_get_request_mode() is declared as the " "following:" msgstr "" "Med _WRAP_METHOD() är det också möjligt för returvärdet " "av den omslutna C-funktionen (om den har något) att placeras i en " "utdataparameter för C++-metoden i stället för att även C++-metoden också ska " "returnera ett värde som C-funktionen gör. För att göra det inkluderar du " "helt enkelt utdataparametern i C++-metodens parameterlista och lägger till " "ett {OUT} till utdataparameterns namn. Om exempelvis " "gtk_widget_get_request_mode() deklareras enligt " "följande: <_:programlisting-1/> och det är önskvärt att låta C++-metoden " "ställa in en utdataparameter i stället för att returnera ett " "SizeRequestMode, så kan något i stil med följande användas: <_:" "programlisting-2/> {OUT} som läggs till namnet på " "utdataparametern mode säger till gmmproc att placera C-funktionens returvärde i den utdataparametern. I " "detta fall kommer dock ett nödvändigt initieringsmakro som det följande " "också behöva anges: <_:programlisting-3/> Vilket också skulle kunna skrivas " "som: <_:programlisting-4/>" #. (itstool) path: section/programlisting #: C/index-in.docbook:11246 #, no-wrap msgid "" "\n" "GtkSizeRequestMode gtk_widget_get_request_mode(GtkWidget* widget);\n" msgstr "" "\n" "GtkSizeRequestMode gtk_widget_get_request_mode(GtkWidget* widget);\n" #. (itstool) path: section/para #: C/index-in.docbook:11249 msgid "" "And having the C++ method set an output parameter is desired instead of " "returning a SizeRequestMode, something like the following could " "be used:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:11252 #, fuzzy, no-wrap msgid "" "\n" "_WRAP_METHOD(void get_request_mode(SizeRequestMode& mode{OUT}) const,\n" " gtk_widget_get_request_mode)\n" msgstr "" "\n" "_WRAP_METHOD(void get_request_mode(SizeRequestMode& mode{OUT}) const,\n" " gtk_widget_get_request_mode)\n" #. (itstool) path: section/para #: C/index-in.docbook:11256 msgid "" "The {OUT} appended to the name of the mode output parameter tells gmmproc to place the " "return of the C function in that output parameter. In this case, however, a " "necessary initialization macro like the following would also have to be " "specified:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:11261 #, no-wrap msgid "" "\n" "_INITIALIZATION(`SizeRequestMode&',`GtkSizeRequestMode',`$3 = (SizeRequestMode)($4)')\n" msgstr "" "\n" "_INITIALIZATION(`SizeRequestMode&',`GtkSizeRequestMode',`$3 = (SizeRequestMode)($4)')\n" #. (itstool) path: section/para #: C/index-in.docbook:11264 msgid "Which could also be written as:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:11265 #, no-wrap msgid "" "\n" "_INITIALIZATION(`SizeRequestMode&',`GtkSizeRequestMode',`$3 = ($1)($4)')\n" msgstr "" "\n" "_INITIALIZATION(`SizeRequestMode&',`GtkSizeRequestMode',`$3 = ($1)($4)')\n" #. (itstool) path: section/para #: C/index-in.docbook:11268 msgid "" "_WRAP_METHOD() also supports setting C++ output " "parameters from C output parameters if the C function being wrapped has any. " "Suppose, for example, that we want to wrap the following C function that " "returns a value in its C output parameter out_mime_type:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:11274 #, no-wrap msgid "" "\n" "GInputStream* gdk_clipboard_read_finish(GdkClipboard* clipboard,\n" " GAsyncResult* result, const char** out_mime_type, GError** error)\n" msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:11278 msgid "" "To have gmmproc place the value returned in the C++ " "out_mime_type output parameter, something like the " "following _WRAP_METHOD() macro could be used:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:11282 #, no-wrap msgid "" "\n" "_WRAP_METHOD(Glib::RefPtr<Gio::InputStream> read_finish(\n" " const Glib::RefPtr<Gio::AsyncResult>& result,\n" " Glib::ustring& out_mime_type{>>}), gdk_clipboard_read_finish, errthrow)\n" msgstr "" #. (itstool) path: section/para #: C/index-in.docbook:11287 #, fuzzy msgid "" "The {>>} following the out_mime_type parameter name indicates that the C++ output parameter should be " "set from the value returned in the C parameter from the C function. " "gmmproc will generate a declaration of a temporary " "variable in which to store the value of the C output parameter and a " "statement that sets the C++ output parameter from the temporary variable. In " "this case it may be necessary to have an _INITIALIZATION() describing how to set a Glib::ustring& " "from a const char** such as the following:" msgstr "" "_WRAP_METHOD() stöder också att sätta C++-" "utdataparametrar från C- utdataparametrar om den omslutna C-funktionen har " "några. Anta till exempel att vi vill omsluta följande C-funktion som " "returnerar ett värde i sin C-utdataparameter rect: <_:" "programlisting-1/> För att gmmproc ska placera det " "returnerade värdet i C++-utdataparametern rect ska " "något i stil med följande _WRAP_METHOD()-makro " "användas: <_:programlisting-2/> Den {>>} som följer " "parameternamnet rect indikerar att C++-" "utdataparametern ska ställas in från värdet som returneras C-parametern från " "C-funktionen. gmmproc kommer att generera en deklaration " "av en temporär variabel i vilken värdet av C-utdataparametern och en sats " "som sätter C++-utdataparametern från temporärvariabeln. I detta fall kan det " "vara nödvändigt att ha en _INITIALIZATION() som " "beskriver hur en Gdk::Rectangle& ska sättas från " "en GdkRectangle* som i det följande: <_:" "programlisting-3/>" #. (itstool) path: section/programlisting #: C/index-in.docbook:11297 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "_INITIALIZATION(`Gtk::Widget&',`GtkWidget*',`$3 = Glib::wrap($4)')\n" msgid "" "\n" "_INITIALIZATION(`Glib::ustring&',`const char*',`$3 = Glib::convert_const_gchar_ptr_to_ustring($4)')\n" msgstr "" "\n" "_INITIALIZATION(`Gtk::Widget&',`GtkWidget*',`$3 = Glib::wrap($4)')\n" #. (itstool) path: section/title #: C/index-in.docbook:11303 #, fuzzy msgid "String Parameter Processing" msgstr "Parameterbearbetning av strängar" #. (itstool) path: section/para #: C/index-in.docbook:11305 #, fuzzy msgid "" "A string-valued input parameter in a C++ method is usually a const " "Glib::ustring& or a const std::string&. In C " "code it's a const gchar*. When an empty string is converted to " "const gchar*, it can be converted either to nullptr or to a pointer to an empty string (with c_str()). Some parameters in some C functions accept a nullptr, and interpret it in a special way. Other parameters must not be " "nullptr." msgstr "" "En strängvärd indataparameter i en C++-metod är vanligen en const " "Glib::ustring& eller en const std::string&. I C-" "kod är det en const gchar*. När en tom sträng konverteras till " "const gchar* kan den konverteras antingen till " "nullptr eller till en pekare till en tom sträng (med " "c_str()). Några parametrar i vissa C-funktioner " "accepterar en nullptr och tolkar den på ett speciellt " "sätt. Andra parametrar får inte vara nullptr." #. (itstool) path: listitem/para #: C/index-in.docbook:11318 #, fuzzy msgid "" "for mandatory parameters (with or without default values): empty string to " "empty string," msgstr "" "för obligatoriska parametrar (med eller utan standardvärden): tom sträng " "till tom sträng," #. (itstool) path: listitem/para #: C/index-in.docbook:11320 #, fuzzy msgid "" "for optional parameters (with appended {?}): empty string " "to nullptr." msgstr "" "för valfria parametrar (med tillagd {?}): tom sträng till " "nullptr." #. (itstool) path: section/para #: C/index-in.docbook:11314 #, fuzzy msgid "" "The default conversion in _WRAP_METHOD() and similar " "macros is <_:itemizedlist-1/> If the default conversion is not the best " "conversion, append {NULL} to a mandatory parameter or " "{?!NULL} to an optional parameter (!NULL = not NULL). If you append both a C parameter " "name and NULL, separate them with a space: " "{c_param_name NULL}." msgstr "" "Standardkonverteringen i _WRAP_METHOD() och liknande " "makron är <_:itemizedlist-1/> Om standardkonverteringen inte är den bästa " "konverteringen lägger du till {NULL} till en obligatorisk " "parameter eller {?!NULL} till en valfri parameter " "(!NULL = not NULL). Om du lägger till " "både ett C-parameternamn och NULL separerar du dem med " "ett blanksteg: {c_param_name NULL}." #. (itstool) path: section/title #: C/index-in.docbook:11334 msgid "Basic Types" msgstr "Grundläggande typer" #. (itstool) path: section/para #: C/index-in.docbook:11335 msgid "" "Some of the basic types that are used in C APIs have better alternatives in " "C++. For example, there's no need for a gboolean type since C++ " "has bool. The following list shows some commonly-used types in " "C APIs and what you might convert them to in a C++ wrapper library." msgstr "" "Vissa av de grundläggande typerna som används i C-API:er har bättre " "alternativ i C++. Exempelvis finns inget behov av en gboolean-" "typ eftersom C++ har bool. Följande lista visar några vanligt " "använda typer i C-API:er och vad du kanske konverterar dem till i ett C++-" "omslagsbibliotek." #. (itstool) path: segmentedlist/segtitle #: C/index-in.docbook:11342 msgid "C type" msgstr "C-typ" #. (itstool) path: segmentedlist/segtitle #: C/index-in.docbook:11343 msgid "C++ type" msgstr "C++-typ" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11344 msgid "gboolean" msgstr "gboolean" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11344 msgid "bool" msgstr "bool" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11345 msgid "gint" msgstr "gint" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11345 msgid "int" msgstr "int" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11346 msgid "guint" msgstr "guint" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11347 msgid "gdouble" msgstr "gdouble" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11347 msgid "double" msgstr "double" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11348 msgid "gunichar" msgstr "gunichar" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11349 msgid "gchar*" msgstr "gchar*" #. (itstool) path: seglistitem/seg #: C/index-in.docbook:11349 msgid "" "Glib::ustring (or std::string " "for filenames)" msgstr "" "Glib::ustring (eller std::string för filnamn)" #. (itstool) path: section/title #: C/index-in.docbook:11355 msgid "Hand-coded source files" msgstr "Handkodade källkodsfiler" #. (itstool) path: section/para #: C/index-in.docbook:11357 #, fuzzy msgid "" "You might want to include additional source files that will not be generated " "by gmmproc from .hg and ." "ccg files. You can simply place these in your " "libsomething/libsomethingmm directory and mention them " "in the meson.build in the extra_h_files and extra_cc_files variables." msgstr "" "Du kan vilja inkludera ytterligare källkodsfiler som inte kommer genereras " "av gmmproc från .hg- och ." "ccg-filer. Du kan helt enkelt placera dessa i din katalog " "libsomething/libsomethingmm och nämna dem i " "meson.build i variablerna extra_h_files och extra_cc_files." #. (itstool) path: section/title #: C/index-in.docbook:11367 msgid "Initialization" msgstr "Initiering" #. (itstool) path: section/para #: C/index-in.docbook:11369 #, fuzzy msgid "" "Your library must be initialized before it can be used, to register the new " "types that it makes available. Also, the C library that you are wrapping " "might have its own initialization function that you should call. You can do " "this in an init() function that you can place in hand-" "coded init.h and init.cc files. " "This function should initialize your dependencies (such as the C function, " "and gtkmm) and call your generated " "wrap_init() function. For instance:" msgstr "" "Ditt bibliotek måste initieras innan det kan användas för att registrera de " "nya typer som det gör tillgängligt. C-biblioteket som du omsluter kan också " "ha sin egen initieringsfunktion som du ska anropa. Du kan göra detta i en " "init()-funktion som du kan placera i handkodade " "init.h- och init.cc-filer. Denna " "funktion ska initiera dina beroenden (som C funktionen and " "gtkmm) och anropa din genererade " "wrap_init()-funktion. Till exempel:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11377 #, fuzzy, no-wrap msgid "" "\n" "void init()\n" "{\n" " Gtk::init_gtkmm_internals(); //Sets up the g type system and the Glib::wrap() table.\n" " wrap_init(); //Tells the Glib::wrap() table about the libsomethingmm classes.\n" "}\n" msgstr "" "\n" "void init()\n" "{\n" " Gtk::init_gtkmm_internals(); //Konfigurerar g type-systemet och Glib::wrap()-tabellen.\n" " wrap_init(); //Säger till Glib::wrap()-tabellen om libsomethingmm-klasserna.\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:11384 #, fuzzy msgid "" "The implementation of the wrap_init() method in " "wrap_init.cc is generated by " "generate_wrap_init.pl, but the declaration in " "wrap_init.h is hand-coded, so you will need to adjust " "wrap_init.h so that the wrap_init() function appears in the correct C++ namespace." msgstr "" "Implementationen av wrap_init()-metoden i " "wrap_init.cc genereras av generate_wrap_init." "pl, men deklarationen i wrap_init.h är " "handkodad, så du kommer behöva justera wrap_init.h så " "att wrap_init()-funktion dyker upp i rätt C++-namnrymd." #. (itstool) path: section/title #: C/index-in.docbook:11393 msgid "Problems in the C API." msgstr "Problem i C-API:t." #. (itstool) path: section/para #: C/index-in.docbook:11395 #, fuzzy msgid "" "You are likely to encounter some problems in the library that you are " "wrapping, particularly if it is a new project. Here are some common " "problems, with solutions." msgstr "" "Du kommer troligen stöta på några problem i biblioteket som du omsluter, " "särskilt om det är ett nytt projekt. Här är några vanliga problem, med " "lösning." #. (itstool) path: section/title #: C/index-in.docbook:11397 #, fuzzy msgid "Unable to predeclare structs" msgstr "Kan inte fördeklarera struct" #. (itstool) path: section/para #: C/index-in.docbook:11399 #, fuzzy msgid "By convention, structs are declared in glib/GTK-style headers like so:" msgstr "Enligt sedvänja deklareras structar i huvuden av glib/GTK-stil så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11400 #, fuzzy, no-wrap msgid "" "\n" "typedef struct _ExampleWidget ExampleWidget;\n" "\n" "struct _ExampleWidget\n" "{\n" " ...\n" "};\n" msgstr "" "\n" "typedef struct _ExampleWidget ExampleWidget;\n" "\n" "struct _ExampleWidget\n" "{\n" " ...\n" "};\n" #. (itstool) path: section/para #: C/index-in.docbook:11408 #, fuzzy msgid "" "The extra typedef allows the struct to be used in a header without including " "its full definition, simply by predeclaring it, by repeating that typedef. " "This means that you don't have to include the C library's header in your C++ " "header, thus keeping it out of your public API. gmmproc " "assumes that this technique was used, so you will see compiler errors if " "that is not the case." msgstr "" "Denna extra typedef låter structen användas i ett huvud utan att inkludera " "dess fullständiga definition genom att helt enkelt fördeklarera den, genom " "att repetera denna typedef. Detta betyder att du inte behöver inkludera C-" "bibliotekets header i din C++-header, och därmed hålla den utanför ditt " "publika API. gmmproc antar att denna teknik användes, så " "du kommer se kompileringsfel om så inte är fallet." #. (itstool) path: section/para #: C/index-in.docbook:11413 #, fuzzy #| msgid "The menu looks like this:" msgid "This compiler error might look like this:" msgstr "Menyn ser ut så här:" #. (itstool) path: section/programlisting #: C/index-in.docbook:11415 #, no-wrap msgid "" "\n" "example-widget.h:56: error: using typedef-name 'ExampleWidget' after 'struct'\n" "../../libexample/libexamplemm/example-widget.h:34: error: 'ExampleWidget' has a previous declaration here\n" "make[4]: *** [example-widget.lo] Error 1\n" msgstr "" "\n" "example-widget.h:56: error: using typedef-name 'ExampleWidget' after 'struct'\n" "../../libexample/libexamplemm/example-widget.h:34: error: 'ExampleWidget' has a previous declaration here\n" "make[4]: *** [example-widget.lo] Error 1\n" #. (itstool) path: section/para #: C/index-in.docbook:11420 msgid "or this:" msgstr "" #. (itstool) path: section/programlisting #: C/index-in.docbook:11421 #, no-wrap msgid "" "\n" "example-widget.h:60: error: '_ExampleWidget ExampleWidget' redeclared as different kind of symbol\n" "../../libexample/libexamplemm/example-widget.h:34: error: previous declaration of 'typedef struct _ExampleWidget ExampleWidget'\n" msgstr "" "\n" "example-widget.h:60: error: '_ExampleWidget ExampleWidget' redeclared as different kind of symbol\n" "../../libexample/libexamplemm/example-widget.h:34: error: previous declaration of 'typedef struct _ExampleWidget ExampleWidget'\n" #. (itstool) path: section/para #: C/index-in.docbook:11425 #, fuzzy msgid "" "This is easy to correct in the C library, so do send a patch to the relevant " "maintainer." msgstr "" "Detta är lätt att rätta till i C-biblioteket, så skicka en programfix till " "rätt utvecklare." #. (itstool) path: section/title #: C/index-in.docbook:11429 msgid "Lack of properties" msgstr "Avsaknad av egenskaper" #. (itstool) path: section/para #: C/index-in.docbook:11431 #, fuzzy msgid "" "By convention, glib/GTK-style objects have *_new() " "functions, such as example_widget_new() that do nothing " "more than call g_object_new() and return the result. " "The input parameters are supplied to g_object_new() " "along with the names of the properties for which they are values. For " "instance," msgstr "" "Enligt konvention har objekt av glib/GTK-stil *_new()-" "funktioner, som example_widget_new() som inte gör något " "mera än att anropa g_object_new() och returnera " "resultatet. Indataparametrarna tillhandahålls till g_object_new() tillsammans med namnen på egenskaperna för vilka de är värden. " "Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:11437 #, fuzzy, no-wrap msgid "" "\n" "GtkWidget* example_widget_new(int something, const char* thing)\n" "{\n" " return g_object_new (EXAMPLE_TYPE_WIDGET, \"something\", something, \"thing\", thing, NULL);\n" "}\n" msgstr "" "\n" "GtkWidget* example_widget_new(int something, const char* thing)\n" "{\n" " return g_object_new (EXAMPLE_TYPE_WIDGET, \"something\", something, \"thing\", thing, NULL);\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:11443 #, fuzzy msgid "" "This allows language bindings to implement their own equivalents (such as C+" "+ constructors), without using the *_new() function. " "This is often necessary so that they can actually instantiate a derived " "GType, to add their own hooks for signal handlers and vfuncs." msgstr "" "Detta låter språkbindningar implementera sina egna motsvarigheter (som C++-" "konstruktorer), utan att använda *_new()-funktionen. " "Detta är ofta nödvändigt så att de faktiskt kan instansiera en härledd " "GType, för att lägga till deras egna krokar för signalhanterare och vfunc-" "funktioner." #. (itstool) path: section/para #: C/index-in.docbook:11447 #, fuzzy msgid "" "At the least, the _new() function should not use any " "private API (functions that are only in a .c file). Even when there are no " "functions, we can sometimes reimplement 2 or 3 lines of code in a " "_new() function as long as those lines of code use API " "that is available to us." msgstr "" "Åtminstone ska _new()-funktionen inte använda något " "privat API (funktioner som bara finns i en .c-fil). Även då det inte finns " "några funktioner kan vi ibland implementera om 2 eller 3 rader kod i en " "_new()-funktion så länge som dessa rader kod använder " "API som är tillgängliga för oss." #. (itstool) path: section/para #: C/index-in.docbook:11452 #, fuzzy msgid "" "Another workaround is to add a *_construct() function " "that the C++ constructor can call after instantiating its own type. For " "instance," msgstr "" "En annan lösning är att lägga till en *_construct()-" "funktion som C++-konstruktorn kan anropa efter att ha instansierat sin egen " "typ. Till exempel," #. (itstool) path: section/programlisting #: C/index-in.docbook:11455 #, fuzzy, no-wrap msgid "" "\n" "GtkWidget* example_widget_new(int something, const char* thing)\n" "{\n" " ExampleWidget* widget;\n" " widget = g_object_new (EXAMPLE_TYPE_WIDGET, NULL);\n" " example_widget_construct(widget, \"something\", something, \"thing\", thing);\n" "}\n" "\n" "void example_widget_construct(ExampleWidget* widget, int something, const char* thing)\n" "{\n" " //Do stuff that uses private API:\n" " widget->priv->thing = thing;\n" " do_something(something);\n" "}\n" msgstr "" "\n" "GtkWidget* example_widget_new(int something, const char* thing)\n" "{\n" " ExampleWidget* widget;\n" " widget = g_object_new (EXAMPLE_TYPE_WIDGET, NULL);\n" " example_widget_construct(widget, \"something\", something, \"thing\", thing);\n" "}\n" "\n" "void example_widget_construct(ExampleWidget* widget, int something, const char* thing)\n" "{\n" " //Gör saker som använder privat API:\n" " widget->priv->thing = thing;\n" " do_something(something);\n" "}\n" #. (itstool) path: section/para #: C/index-in.docbook:11470 #, fuzzy msgid "" "Adding properties, and ensuring that they interact properly with each other, " "is relatively difficult to correct in the C library, but it is possible, so " "do file a bug and try to send a patch to the relevant maintainer." msgstr "" "Att lägga till egenskaper och försäkra sig om att de interagerar korrekt med " "varandra är relativt svårt att rätta till i C-biblioteket, men det är " "möjligt, så skriv en felrapport och försök skicka in en programfix till rätt " "utvecklare." #. (itstool) path: section/title #: C/index-in.docbook:11478 msgid "Documentation" msgstr "Dokumentation" #. (itstool) path: section/para #: C/index-in.docbook:11480 msgid "" "In general, gtkmm-style projects use Doxygen, which reads specially " "formatted C++ comments and generates HTML documentation. You may write these " "doxygen comments directly in the header files." msgstr "" "Allmänt använder projekt av gtkmm-stil sig av Doxygen, som läser speciellt " "formaterade C++-kommentarer och genererar HTML-dokumentation. Du kan skriva " "dessa doxygen-kommentarer direkt i header-filerna." #. (itstool) path: section/title #: C/index-in.docbook:11483 msgid "Reusing C documentation" msgstr "Återanvända C-dokumentation" #. (itstool) path: section/para #: C/index-in.docbook:11485 #, fuzzy msgid "" "You might wish to reuse documentation that exists for the C library that you " "are wrapping. GTK-style C libraries typically use gtk-doc or gi-docgen and " "therefore have source code comments formatted for gtk-doc or gi-docgen and " "some extra documentation in .sgml and .xml files. The docextract_to_xml.py " "script, from glibmm's tools/defs_gen directory, can " "read these files and generate an .xml file that gmmproc " "can use to generate doxygen comments. gmmproc will even " "try to transform the documentation to make it more appropriate for a C++ API." msgstr "" "Du kan vilja återanvända befintlig dokumentation för C-biblioteket som du " "omsluter. C-bibliotek av GTK-stil använder vanligen gtk-doc eller gi-docgen " "och har därför källkodskommentarer formaterade för gtk-doc eller gi-docgen " "och viss extra dokumentation i .sgml- och .xml-filer. Skriptet " "docextract_to_xml.py från glibmm:s tools/defs_gen-" "katalog kan läsa dessa filer och generera en .xml-fil som gmmproc kan använda för att generera doxygen-kommentarer. gmmproc kommer till och med försöka transformera dokumentationen för att " "göra den mer lämplig för ett C++-API." #. (itstool) path: section/programlisting #: C/index-in.docbook:11495 #, no-wrap msgid "./docextract_to_xml.py -s ~/checkout/gnome/gtk/gtk/ > gtk_docs.xml\n" msgstr "./docextract_to_xml.py -s ~/checkout/gnome/gtk/gtk/ > gtk_docs.xml\n" #. (itstool) path: section/para #: C/index-in.docbook:11497 #, fuzzy msgid "" "Because this automatic transformation is not always appropriate, you might " "want to provide hand-written text for a particular method. You can do this " "by copying the XML node for the function from your something_docs." "xml file to the something_docs_override.xml " "file and changing the contents. Alternatively you can write your own " "documentation in the .hg file." msgstr "" "Eftersom denna automatiskt transformering inte alltid är lämplig kan du " "vilja tillhandahålla handskriven text för en viss metod. Du kan göra detta " "genom att kopiera XML-noden för funktionen från din fil " "something_docs.xml till filen " "something_docs_override.xml och ändra innehållet. " "Alternativt kan du skriva din egen dokumentation i .hg-" "filen." #. (itstool) path: section/title #: C/index-in.docbook:11507 msgid "Documentation build structure" msgstr "Byggstruktur för dokumentation" #. (itstool) path: section/para #: C/index-in.docbook:11509 #, fuzzy msgid "" "If you copied the skeleton source tree in mm-common and substituted the placeholder text, then you will already " "have suitable meson.build and Doxyfile.in files in the doc/reference/ directory. You " "probably need to modify the tag_file_modules variable in " "meson.build, though. With the mm-common build setup, the list of Doxygen input files is not defined in " "the Doxygen configuration file, but passed along from meson/ninja to the standard input of doxygen." msgstr "" "Om du kopierade skelettkällkodsträdet i mm-common " "och ersatte platshållartexten kommer du troligen redan ha lämpliga " "meson.build- och Doxyfile.in-filer " "i katalogen doc/reference/. Du behöver dock troligen " "ändra variabeln tag_file_modules i meson.build. Med byggkonfigurationen för mm-common " "är listan över Doxygen-indatafiler inte definierad i Doxygen-" "konfigurationsfilen, utan skickas från meson/ninja till " "standard in för doxygen." #~| msgid "" #~| "Reference" #~ msgid "" #~ "Reference" #~ msgstr "" #~ "Referens" #~ msgid "" #~ "Source Code, IconView" #~ msgstr "" #~ "Källkod, IconView" #, fuzzy #~ msgid "" #~ "MessageDialog is a convenience class, used to " #~ "create simple, standard message dialogs, with a message and buttons for " #~ "user response. You can specify the type of message and the text in the " #~ "constructor, as well as specifying standard buttons via the Gtk::" #~ "ButtonsType enum." #~ msgstr "" #~ "MessageDialog är en bekvämlighetsklass, som " #~ "används för att skapa enkla standardmeddelandedialoger med ett meddelande " #~ "och knappar för svar från användaren. Du kan ange meddelandetypen och " #~ "texten i konstruktorn, såväl som att ange standardknappar via Gtk::" #~ "ButtonsType-uppräkningen." #~ msgid "" #~ "Source Code" #~ msgstr "" #~ "Källkod" #~ msgid "" #~ "The FileChooserDialog is suitable for use with " #~ "\"Open\" or \"Save\" menu items." #~ msgstr "" #~ "FileChooserDialog är lämplig för användning med " #~ "menyobjekten ”Öppna” eller ”Spara”." #~ msgid "FileChooser" #~ msgstr "FileChooser" #, fuzzy #~ msgid "" #~ "The ColorChooserDialog allows the user to choose a " #~ "color. The ColorButton opens a color selection " #~ "dialog when it is clicked." #~ msgstr "" #~ "ColorChooserDialog låter användaren välja en färg. " #~ "ColorButton öppnar en färgvalsdialog när den " #~ "klickas på." #, fuzzy #~ msgid "" #~ "The FontChooserDialog allows the user to choose a " #~ "font. The FontButton opens a font chooser dialog " #~ "when it is clicked." #~ msgstr "" #~ "FontChooserDialog låter användaren välja ett " #~ "typsnitt. FontButton-knappen öppnar en " #~ "typsnittsväljardialog när den klickas på." #~ msgid "" #~ "Source Code" #~ msgstr "" #~ "Källkod" #, fuzzy #~ msgid "" #~ "Your widget class, whether it's derived directly from Gtk::" #~ "Widget or from another widget class, can read some style " #~ "information from a CSS (Cascading Style Sheets) file. The users of your " #~ "widget, or the users of an application program with your widget, can then " #~ "modify the style of your widget without modifying the source code. Useful " #~ "classes are Gtk::StyleContext and Gtk::" #~ "CssProvider. With the methods of Gtk::" #~ "StyleContext you can read the values of your widget's style " #~ "information. CSS files are described in the documentation of " #~ "GTK. The following example shows a simple use " #~ "of Gtk::StyleContext::get_padding()." #~ msgstr "" #~ "Din komponentklass kan läsa viss stilinformation från en CSS-fil " #~ "(Cascading Style Sheets), oavsett om den härleds direkt från " #~ "Gtk::Widget eller från en annan komponentklass. " #~ "Användarna av din komponent, eller användarna av ett program med din " #~ "komponent, kan sedan ändra stilen för din komponent utan att ändra " #~ "källkoden. Användbara klasser är Gtk::StyleContext " #~ "och Gtk::CssProvider. Med metoderna i " #~ "Gtk::StyleContext kan du läsa värden för din " #~ "komponents stilinformation. CSS-filer beskrivs i dokumentationen för " #~ "GTK. Följande exempel visar enkel användning " #~ "av Gtk::StyleContext::get_padding()." #, fuzzy #~ msgid "" #~ "For all the macros that process method signatures, it is possible to " #~ "specify a different order for the C++ parameters than the existing order " #~ "in the C function, virtual function or signal. For example, say that the " #~ "following C function were being wrapped as a C++ method for the " #~ "Gtk::Widget class: <_:programlisting-1/> However, " #~ "changing the order of the C++ method's two parameters is necessary. " #~ "Something like the following would wrap the function as a C++ method with " #~ "a different order for the two parameters: <_:programlisting-2/> The " #~ "{c_param_name} following the method parameter names " #~ "tells gmmproc to map the C++ parameter to the " #~ "specified C parameter within the {}. Since the C++ " #~ "parameter names correspond to the C ones, the above could be re-written " #~ "as: <_:programlisting-3/>" #~ msgstr "" #~ "För alla makron som bearbetar metodsignaturer är det möjligt att ange en " #~ "annan ordning för C++-parametrarna än den befintliga ordningen i C-" #~ "funktionen, virtuella funktionen eller signalen. Säg exempelvis att " #~ "följande C-funktion omslöts som en C++-metod för Gtk::Widget-klassen: <_:programlisting-1/> Att ändra ordningen på C++-" #~ "metodens parametrar är dock nödvändigt. Något liknande det följande " #~ "skulle omsluta funktionen som en C++-metod med en annan ordning för de " #~ "två parametrarna: <_:programlisting-2/> {c_param_name} " #~ "som följer metodparameternamnen säger till gmmproc att " #~ "mappa C++-parametern till den angivna C-parametern i {}. Eftersom C++-parameternamn motsvarar de i C kommer det ovan " #~ "skrivas om som: <_:programlisting-3/>" #, no-wrap #~ msgid "" #~ "\n" #~ "gboolean gtk_icon_view_get_cell_rect(GtkIconView* icon_view,\n" #~ " GtkTreePath* path, GtkCellRenderer* cell, GdkRectangle* rect);\n" #~ msgstr "" #~ "\n" #~ "gboolean gtk_icon_view_get_cell_rect(GtkIconView* icon_view,\n" #~ " GtkTreePath* path, GtkCellRenderer* cell, GdkRectangle* rect);\n" #, no-wrap #~ msgid "" #~ "\n" #~ "_WRAP_METHOD(bool get_cell_rect(const TreeModel::Path& path,\n" #~ " const CellRenderer& cell, Gdk::Rectangle& rect{>>}) const,\n" #~ " gtk_icon_view_get_cell_rect)\n" #~ msgstr "" #~ "\n" #~ "_WRAP_METHOD(bool get_cell_rect(const TreeModel::Path& path,\n" #~ " const CellRenderer& cell, Gdk::Rectangle& rect{>>}) const,\n" #~ " gtk_icon_view_get_cell_rect)\n" #, no-wrap #~ msgid "" #~ "\n" #~ "_INITIALIZATION(`Gdk::Rectangle&',`GdkRectangle',`$3 = Glib::wrap(&($4))')\n" #~ msgstr "" #~ "\n" #~ "_INITIALIZATION(`Gdk::Rectangle&',`GdkRectangle',`$3 = Glib::wrap(&($4))')\n" #~ msgid "" #~ "This compiler error might look like this: <_:programlisting-1/> or this: " #~ "<_:programlisting-2/>" #~ msgstr "" #~ "Detta kompileringsfel kan se ut så här: <_:programlisting-1/> eller så " #~ "här: <_:programlisting-2/>" # TODO: Fixed sep 2022? #~ msgid "" #~ "At the time of writing (July 2022) drag-and-drop in Gtk::" #~ "TreeViews does not work. See the gtk#3649 issue for the " #~ "latest info." #~ msgstr "" #~ "I skrivande stund (juli 2022) fungerar inte dra-och-släpp i " #~ "Gtk::TreeView. Se ärendet gtk#3649 för " #~ "den senaste informationen." #~ msgid "An preference dialog" #~ msgstr "En inställningsdialog"