Compare commits
564 Commits
devs/kuuko
...
master
Author | SHA1 | Date |
---|---|---|
Davide Andreoli | c8d7bddb47 | |
Davide Andreoli | 4bb6d9fa9f | |
Davide Andreoli | 0b089a5623 | |
Davide Andreoli | a7464e66e6 | |
Davide Andreoli | d1b4512e52 | |
Davide Andreoli | 9896656574 | |
Davide Andreoli | fb649f30e7 | |
Davide Andreoli | f0ab762e16 | |
Davide Andreoli | 4548c5a01b | |
Davide Andreoli | cadc757e7e | |
Davide Andreoli | ed959b59af | |
Davide Andreoli | ec2b95ceab | |
Davide Andreoli | dcf362b03f | |
Davide Andreoli | d420f60e0d | |
Davide Andreoli | 0848286409 | |
Davide Andreoli | 3ca71a067e | |
Davide Andreoli | 9dce9ccad4 | |
Davide Andreoli | 7141f21f0b | |
Davide Andreoli | fabcef1278 | |
Davide Andreoli | a0a6d756b5 | |
Davide Andreoli | e467b3e871 | |
Davide Andreoli | 69cfc2c7fc | |
Davide Andreoli | f70d7c949f | |
Davide Andreoli | 838d4b38c5 | |
Davide Andreoli | b821107688 | |
Davide Andreoli | e7545e3185 | |
Davide Andreoli | 5ac4f71131 | |
Davide Andreoli | 7e4116335a | |
Davide Andreoli | 26e2b89a9d | |
Davide Andreoli | 2d0668c548 | |
Davide Andreoli | a83da00bc7 | |
Davide Andreoli | 31a147fc7c | |
Davide Andreoli | 1f441a18c8 | |
Davide Andreoli | d7275844f1 | |
Davide Andreoli | f3c99eeafa | |
Davide Andreoli | 3dfacc01ab | |
Davide Andreoli | 22274ae81d | |
Davide Andreoli | 25ed1cc567 | |
Davide Andreoli | 22203c0838 | |
Davide Andreoli | 0253f9e178 | |
Davide Andreoli | 55e9e51f69 | |
Davide Andreoli | 5a81c2c944 | |
Davide Andreoli | 5a02f13210 | |
Davide Andreoli | 22cc200a61 | |
Davide Andreoli | 09e016bdbd | |
Davide Andreoli | bd81c36cd0 | |
Davide Andreoli | 81c48dd2d9 | |
Davide Andreoli | b9117cb590 | |
Davide Andreoli | 32aec52918 | |
Davide Andreoli | a7e86793c3 | |
Davide Andreoli | a1eeae15f8 | |
Davide Andreoli | 9ba5210a6a | |
Davide Andreoli | d61c596278 | |
Davide Andreoli | e2ce1b49a3 | |
Davide Andreoli | 8ff30f9edd | |
Davide Andreoli | d544412cd1 | |
Davide Andreoli | 3b0552259d | |
Davide Andreoli | 4fa39916ee | |
Davide Andreoli | 42ee207c16 | |
Davide Andreoli | c9f5b53e28 | |
Davide Andreoli | 8cc259ca26 | |
Davide Andreoli | d25784cca8 | |
Davide Andreoli | 7c555cc9da | |
Davide Andreoli | 3e198f7294 | |
Davide Andreoli | b855a82160 | |
Davide Andreoli | 583f42b131 | |
Davide Andreoli | 2991a6683e | |
Davide Andreoli | fb9b06931e | |
Davide Andreoli | 48d9c26945 | |
Davide Andreoli | 4721842b1e | |
Davide Andreoli | 6aa3501136 | |
Davide Andreoli | 18ca98e66f | |
Davide Andreoli | 006052543f | |
Davide Andreoli | 30c9c60b5d | |
Davide Andreoli | 26607a0986 | |
Davide Andreoli | ffc3c337dc | |
Davide Andreoli | 4b8ddcff7d | |
Davide Andreoli | 00d92cbebe | |
Davide Andreoli | f81fc890bb | |
Davide Andreoli | 28c9775898 | |
Davide Andreoli | 344da31ceb | |
Davide Andreoli | bc9d5648e7 | |
Davide Andreoli | 58ab1d26f7 | |
Davide Andreoli | fe144b8f96 | |
Davide Andreoli | efcebb52bf | |
Davide Andreoli | 7d3799d7fa | |
Davide Andreoli | 85e23f2851 | |
Davide Andreoli | c5759b6d67 | |
Davide Andreoli | 5bbaba2a6e | |
Davide Andreoli | 74ed9e86a4 | |
Davide Andreoli | 3ef64e685c | |
Davide Andreoli | 6e2b444712 | |
Davide Andreoli | 7d8049b0c5 | |
Davide Andreoli | 741000d423 | |
Davide Andreoli | fecc0c2604 | |
Davide Andreoli | 9d5efd8aef | |
Davide Andreoli | 25f620ef19 | |
Davide Andreoli | 6e80968778 | |
Davide Andreoli | 64584362b7 | |
Davide Andreoli | 8ad73b3e69 | |
Davide Andreoli | 5b9ba62e8f | |
Davide Andreoli | 26a4c38d67 | |
Davide Andreoli | 15b29e3ce8 | |
Davide Andreoli | 6bd7daa883 | |
Kai Huuhko | 5864a9dd2d | |
Kai Huuhko | a475ecba44 | |
Davide Andreoli | eace418f9b | |
Davide Andreoli | bb2a45f013 | |
Davide Andreoli | 8c7ad9f31f | |
Davide Andreoli | d9f06e72a2 | |
Davide Andreoli | df221788f0 | |
Davide Andreoli | 6a7e698368 | |
Davide Andreoli | 4557daa602 | |
Kai Huuhko | a70c42e681 | |
Davide Andreoli | d87e0a5484 | |
Davide Andreoli | 89bb6a1998 | |
Kai Huuhko | b06c3151f7 | |
Davide Andreoli | add166fb62 | |
Davide Andreoli | 7aec398ede | |
Davide Andreoli | da9258f474 | |
Davide Andreoli | 9c00cbb0fe | |
Davide Andreoli | 18e2d9c102 | |
Davide Andreoli | 71354b3bb8 | |
Davide Andreoli | a293b4e124 | |
Davide Andreoli | e3224c882a | |
Davide Andreoli | dccd0ed62f | |
Davide Andreoli | 9231e530bf | |
Davide Andreoli | 6f92607ba4 | |
Davide Andreoli | f76e272990 | |
Davide Andreoli | 3e0dbeb7f7 | |
Davide Andreoli | 98b7b2408f | |
Davide Andreoli | ac7013064f | |
Davide Andreoli | f2f8906968 | |
Davide Andreoli | 032750af77 | |
Davide Andreoli | 16fa850f24 | |
Davide Andreoli | 0b03f8b2f3 | |
Davide Andreoli | 810623dbe4 | |
Davide Andreoli | 01220931fc | |
Davide Andreoli | 924f291660 | |
Davide Andreoli | 2e5e96a8dd | |
Davide Andreoli | ea4bc8790d | |
Davide Andreoli | 9e25d34920 | |
Davide Andreoli | 953f468229 | |
Davide Andreoli | f872e7b8c6 | |
Davide Andreoli | e0d892ecaa | |
Davide Andreoli | cb062511b2 | |
Davide Andreoli | fa5b944f31 | |
Davide Andreoli | 99c618fc2b | |
Davide Andreoli | 1a2b8e64f8 | |
Kai Huuhko | 6ad9bb3521 | |
Kai Huuhko | 0217da6c1f | |
Kai Huuhko | f7e96cf0af | |
Kai Huuhko | 58cfedf5af | |
Kai Huuhko | 818e7db2e6 | |
Kai Huuhko | 6fa2d3ff95 | |
Davide Andreoli | 212eca4321 | |
Davide Andreoli | cca359974a | |
Kai Huuhko | f652b6e18f | |
Kai Huuhko | fdab8ed5b6 | |
Kai Huuhko | b2af779d7d | |
Davide Andreoli | 4bd421562d | |
Davide Andreoli | d6fc38ea59 | |
Davide Andreoli | 380e7a58ff | |
Davide Andreoli | 939cd71702 | |
Kai Huuhko | 0ef56b3a58 | |
Kai Huuhko | c955d488f9 | |
Kai Huuhko | a575effa6b | |
Davide Andreoli | 3d31901da7 | |
Davide Andreoli | 79979d9d2d | |
Davide Andreoli | a8c1486aad | |
Kai Huuhko | 54adcd9970 | |
Kai Huuhko | 96ae57ed6a | |
Davide Andreoli | eaa09b6b16 | |
Davide Andreoli | 6ff9589e83 | |
Davide Andreoli | 222f32eaf2 | |
Davide Andreoli | 5258779d41 | |
Davide Andreoli | 5342d77d60 | |
Davide Andreoli | 7066070992 | |
Davide Andreoli | cfb967333d | |
Davide Andreoli | 78d90dd467 | |
Kai Huuhko | 30c2ce90c3 | |
Kai Huuhko | 55039295f2 | |
Kai Huuhko | ad2ead12f7 | |
Kai Huuhko | ecd93319ee | |
Davide Andreoli | 187ca5249b | |
Davide Andreoli | a1bef554e0 | |
Davide Andreoli | 23c6ffc8cf | |
Davide Andreoli | 71946bffb3 | |
Davide Andreoli | bc411cd774 | |
Kai Huuhko | aeeee73fda | |
Davide Andreoli | 9fb954433e | |
Davide Andreoli | 4e57019e1e | |
Davide Andreoli | f59e7c0c18 | |
Davide Andreoli | e47f403a0b | |
Davide Andreoli | 2f1aff95c5 | |
Davide Andreoli | 01d334b5f6 | |
Davide Andreoli | 105743d304 | |
Davide Andreoli | c11a7cf227 | |
Davide Andreoli | 99113cd990 | |
Davide Andreoli | 9381d46765 | |
Davide Andreoli | 83656bff33 | |
Davide Andreoli | 48eec126bb | |
Davide Andreoli | b37c970587 | |
Davide Andreoli | 5a3c19b521 | |
Davide Andreoli | 02f7eb07dd | |
Davide Andreoli | 4a0310140a | |
Davide Andreoli | d87b3bb9d0 | |
Davide Andreoli | a19f0ad434 | |
Davide Andreoli | 11d23a94f1 | |
Davide Andreoli | f287a1f98c | |
Davide Andreoli | ffb294b82f | |
Kai Huuhko | 78c9fe21af | |
Kai Huuhko | 13ea0cbe1d | |
Kai Huuhko | f86234dd25 | |
Davide Andreoli | fbabb111d8 | |
Davide Andreoli | 283efd1a28 | |
Davide Andreoli | 12217e9c2a | |
Kai Huuhko | bc8bac1f1a | |
Kai Huuhko | 0916eae9ff | |
Kai Huuhko | d6bad7a838 | |
Davide Andreoli | 2ebc0dcf74 | |
Davide Andreoli | e2edab7b1c | |
Davide Andreoli | 11c7d38a56 | |
Davide Andreoli | 9b5b526620 | |
Davide Andreoli | 8f23c26d89 | |
Davide Andreoli | 5680c76a49 | |
Davide Andreoli | 082456600a | |
Davide Andreoli | be3069b280 | |
Davide Andreoli | 36ca39e015 | |
Davide Andreoli | 243664d738 | |
Davide Andreoli | e0456df2a2 | |
Davide Andreoli | 51946aaf8b | |
Davide Andreoli | cadf409404 | |
Davide Andreoli | 7fd0f973ca | |
Davide Andreoli | c2c09d4dc9 | |
Davide Andreoli | bae6125061 | |
Bernhard M. Wiedemann | 5bbbed95c0 | |
Davide Andreoli | eca2dfaa0b | |
Davide Andreoli | aba5250634 | |
Kai Huuhko | 41c1779e81 | |
Kai Huuhko | 77d023dfe1 | |
Kai Huuhko | 05c19962dc | |
Davide Andreoli | fea03a787c | |
Davide Andreoli | b6f729dc3a | |
Davide Andreoli | 6668176720 | |
Kai Huuhko | 9a3d441f1c | |
Kai Huuhko | d5656fdd3d | |
Kai Huuhko | ba7bf818d8 | |
Kai Huuhko | 1189e17fe0 | |
Kai Huuhko | fc987411da | |
Kai Huuhko | 523fe8ad4d | |
Kai Huuhko | 3661a78c96 | |
Kai Huuhko | caef23bb34 | |
Kai Huuhko | 684ad779dc | |
Davide Andreoli | 625500bffc | |
Davide Andreoli | 0ecf04eba9 | |
Davide Andreoli | 11d3007f02 | |
Davide Andreoli | cab804e69b | |
Davide Andreoli | 190d0aa7b6 | |
Davide Andreoli | 24318c8d33 | |
Kai Huuhko | 6980ffb0e4 | |
Kai Huuhko | fa69908d71 | |
Davide Andreoli | 86aa8c5138 | |
Davide Andreoli | 9809eb2739 | |
Davide Andreoli | 4f8dfc195f | |
Davide Andreoli | 078d440e05 | |
Davide Andreoli | e087d0d918 | |
Davide Andreoli | 920a8891e6 | |
Davide Andreoli | f03f83fba9 | |
Davide Andreoli | 926c325de8 | |
Davide Andreoli | 005dd26f73 | |
Davide Andreoli | 90595ffdca | |
Davide Andreoli | fc68b43317 | |
Davide Andreoli | 458121f6be | |
Davide Andreoli | f3e6315413 | |
Davide Andreoli | 592467c7bd | |
Davide Andreoli | 1599140196 | |
Davide Andreoli | 0021e4a186 | |
Davide Andreoli | 17df9e69aa | |
Davide Andreoli | 93d2c01002 | |
Davide Andreoli | e963e6d061 | |
Davide Andreoli | 8af35d3f56 | |
Kai Huuhko | 8f2baa86b5 | |
Kai Huuhko | 6c16e2f746 | |
Kai Huuhko | 16f7cb1a24 | |
Davide Andreoli | 06cb7ad598 | |
Kai Huuhko | 75fa5ff256 | |
Kai Huuhko | 5d73c59088 | |
Kai Huuhko | 453c2a123c | |
Davide Andreoli | 8e7616c1b3 | |
Davide Andreoli | 76e94bcbf8 | |
Davide Andreoli | eaf3110089 | |
Davide Andreoli | f01ac0788e | |
Davide Andreoli | d4f355f584 | |
Davide Andreoli | 5594375fac | |
Davide Andreoli | aceff14567 | |
Davide Andreoli | 8ad08e8ef8 | |
Davide Andreoli | ed5f93850f | |
Davide Andreoli | 435e57ca44 | |
Davide Andreoli | fd0b963651 | |
Davide Andreoli | a7c8b2d40d | |
Davide Andreoli | b82ed6f029 | |
Davide Andreoli | df1719d4c9 | |
Davide Andreoli | 3c20338884 | |
Davide Andreoli | 95846a8eaa | |
Davide Andreoli | e9c55b7f5e | |
Davide Andreoli | 28812962d5 | |
Davide Andreoli | 191ce5c22c | |
Davide Andreoli | 40ac305d0d | |
Davide Andreoli | d0026d6103 | |
Davide Andreoli | 1dc4053ce5 | |
Davide Andreoli | 7f132af8d6 | |
Davide Andreoli | 870611de99 | |
Davide Andreoli | 0834e66762 | |
Davide Andreoli | 43591f8b8e | |
Davide Andreoli | 3de1d7be24 | |
Davide Andreoli | 634c56d14c | |
Davide Andreoli | f3b3858902 | |
Davide Andreoli | f3df1b4cc9 | |
Davide Andreoli | 7f5c30c7fd | |
Davide Andreoli | 281cb65c1a | |
Davide Andreoli | 130f1db451 | |
Davide Andreoli | 97dadf30da | |
Davide Andreoli | 5e138dcdf2 | |
Davide Andreoli | 4ad8fc60ae | |
Kai Huuhko | 37930f389d | |
Davide Andreoli | ac685358bd | |
Davide Andreoli | 92c05e801a | |
Kai Huuhko | 3dd36bd770 | |
Kai Huuhko | 9b234a4266 | |
Kai Huuhko | a1f36bb073 | |
Davide Andreoli | dba05cc1ba | |
Kai Huuhko | d571c49e6f | |
Kai Huuhko | 1011cb76df | |
Kai Huuhko | 94779d1640 | |
Kai Huuhko | 59b2e1ee59 | |
Davide Andreoli | c03464e343 | |
Kai Huuhko | 4d73872f8f | |
Kai Huuhko | e37026ec17 | |
Kai Huuhko | bc0f40e54c | |
Davide Andreoli | 532bc85acd | |
Davide Andreoli | 9b258cb28e | |
Kai Huuhko | a70d9c7cd4 | |
Davide Andreoli | 6a927f0695 | |
Kai Huuhko | acf2d33969 | |
Kai Huuhko | fb34f48c9d | |
Kai Huuhko | 8df029d240 | |
Davide Andreoli | 9a19db3013 | |
Kai Huuhko | ce58291d20 | |
Kai Huuhko | 8f68e52ecc | |
Kai Huuhko | c3b9a5b18f | |
Kai Huuhko | c08888239f | |
Kai Huuhko | 6532ef85f6 | |
Davide Andreoli | c0e6254c1f | |
Davide Andreoli | f6326d582b | |
Kai Huuhko | b704005981 | |
Kai Huuhko | 70fb839813 | |
Kai Huuhko | 9ffa09d729 | |
Davide Andreoli | b3833978c8 | |
Davide Andreoli | f183fc171f | |
Kai Huuhko | 219ba9cdd9 | |
Kai Huuhko | 1d5ae5fbc9 | |
Kai Huuhko | 144e28a230 | |
Kai Huuhko | 0c170c5bb3 | |
Kai Huuhko | 278fe32110 | |
Kai Huuhko | 75f3f3b70a | |
Davide Andreoli | eb60fbc01e | |
Davide Andreoli | 61590afc6f | |
Davide Andreoli | 3765021dc0 | |
Davide Andreoli | e8172a5cfe | |
Davide Andreoli | 0f0e84d792 | |
Davide Andreoli | e9f07ff537 | |
Davide Andreoli | 6fbe0ba320 | |
Davide Andreoli | 0190d16c05 | |
Kai Huuhko | f20c56fe15 | |
Kai Huuhko | 708f02bccc | |
Kai Huuhko | aee5433cdc | |
Kai Huuhko | a119c3ccdb | |
Kai Huuhko | 9f4eab83b7 | |
Kai Huuhko | 61b53f2477 | |
Kai Huuhko | 73b54938c6 | |
Kai Huuhko | aaaa3a1438 | |
Kai Huuhko | fcc93216f9 | |
Kai Huuhko | 8a0dccbf22 | |
Kai Huuhko | 1940b51f15 | |
Kai Huuhko | 149f7d1278 | |
Kai Huuhko | 0266db28bd | |
Kai Huuhko | c547f72374 | |
Kai Huuhko | 0a9ccfca74 | |
Kai Huuhko | 6036567b41 | |
Kai Huuhko | 4ccea0f35d | |
Kai Huuhko | ea2d5bd689 | |
Kai Huuhko | 3120e56250 | |
Davide Andreoli | 807f0417db | |
Kai Huuhko | ccc88f6650 | |
Kai Huuhko | 4b9a44d2fc | |
Kai Huuhko | dd5b35ef8f | |
Kai Huuhko | 6fa1b78256 | |
Kai Huuhko | 270ac10e09 | |
Kai Huuhko | 179404e279 | |
Kai Huuhko | 8b594d4bd8 | |
Kai Huuhko | 247eb9e452 | |
Kai Huuhko | a407e11298 | |
Kai Huuhko | d36b61e97e | |
Kai Huuhko | 7fad9e3ff4 | |
Kai Huuhko | c4786f997e | |
Kai Huuhko | 4ab927809e | |
Kai Huuhko | a11fadc82d | |
Kai Huuhko | d416425f51 | |
Kai Huuhko | fbc22d850d | |
Kai Huuhko | 16f04ee2ec | |
Kai Huuhko | 9dbff82aac | |
Kai Huuhko | 3dd81c4f60 | |
Kai Huuhko | 9e86901b0d | |
Kai Huuhko | c61e4912e7 | |
Kai Huuhko | 204aecc746 | |
Kai Huuhko | f3a5b44151 | |
Kai Huuhko | c1e51903fe | |
Kai Huuhko | 3d7b940631 | |
Kai Huuhko | db5663773e | |
Kai Huuhko | 3c710bb4b4 | |
Kai Huuhko | 4af81e96a7 | |
Kai Huuhko | d3357619f7 | |
Kai Huuhko | ded0c5fd06 | |
Kai Huuhko | 2dcc34230e | |
Kai Huuhko | aabeef1bae | |
Kai Huuhko | 5fdfe2e553 | |
Kai Huuhko | 2a1a08ae40 | |
Kai Huuhko | 4fedd07228 | |
Kai Huuhko | 5efbb8810b | |
Kai Huuhko | 65d68e7aee | |
Kai Huuhko | ca4899125d | |
Kai Huuhko | 460d749aef | |
Kai Huuhko | ee9c3cb042 | |
Kai Huuhko | f18ddbf87c | |
Kai Huuhko | 9c801a9416 | |
Kai Huuhko | c8f782538f | |
Kai Huuhko | ff83ec4266 | |
Davide Andreoli | 9afb74906b | |
Kai Huuhko | e27e5e3f13 | |
Kai Huuhko | 2ce228be96 | |
Davide Andreoli | d141a912e5 | |
Davide Andreoli | 9428a7418e | |
Davide Andreoli | 4b7d08e38a | |
Davide Andreoli | abbccd84aa | |
Davide Andreoli | 65ff1c8217 | |
Davide Andreoli | b4fcee3de2 | |
Davide Andreoli | a90f1dd54d | |
Kai Huuhko | 31a6f559b0 | |
Davide Andreoli | 1ccc6012d8 | |
Davide Andreoli | ca7b737d67 | |
Davide Andreoli | c64ca0fa1a | |
Davide Andreoli | 8106e2b1aa | |
Davide Andreoli | 6309b15873 | |
Davide Andreoli | 28da8bad4a | |
Davide Andreoli | fb09f3dad5 | |
Davide Andreoli | c6508c52bb | |
Davide Andreoli | 806fad39cb | |
Davide Andreoli | 7eb3217a69 | |
Davide Andreoli | 24025e6d81 | |
Davide Andreoli | 1d8ffd1ed4 | |
Davide Andreoli | 588d28ab12 | |
Davide Andreoli | b71a0af896 | |
Davide Andreoli | 6ac80225fb | |
Davide Andreoli | d4572bf26a | |
Davide Andreoli | 4a533f73df | |
Davide Andreoli | e44d8b176b | |
Davide Andreoli | a4273b1095 | |
Davide Andreoli | 660c0a7e51 | |
Davide Andreoli | 928f802ed4 | |
Davide Andreoli | 129c801aea | |
Davide Andreoli | 9cee723e44 | |
Davide Andreoli | ea60044620 | |
Davide Andreoli | 28d1e6853e | |
Davide Andreoli | f0d76df693 | |
Davide Andreoli | fe39fcc5e6 | |
Davide Andreoli | 77d14470c4 | |
Davide Andreoli | 308f93a145 | |
Davide Andreoli | 114cfaaa00 | |
Davide Andreoli | 49d409db3a | |
Davide Andreoli | 64e9c9ac96 | |
Davide Andreoli | 852d472db8 | |
Davide Andreoli | b18b8c0d8c | |
Davide Andreoli | c1aeafd2e1 | |
Davide Andreoli | be323e24bc | |
Davide Andreoli | afc49ca595 | |
Davide Andreoli | 7687adb6d9 | |
Davide Andreoli | e917da6abf | |
Davide Andreoli | 1d740612d9 | |
Davide Andreoli | 132b772e4b | |
Davide Andreoli | 85b27c161e | |
Davide Andreoli | 29d1b41f44 | |
Davide Andreoli | c103b5d3b3 | |
Davide Andreoli | 24d4e16cfa | |
Davide Andreoli | f91999ac49 | |
Davide Andreoli | 783e2ba6c8 | |
Davide Andreoli | d368d64d3f | |
Davide Andreoli | 18a334763f | |
Davide Andreoli | 2f8b122110 | |
Davide Andreoli | de01f76650 | |
Davide Andreoli | 9b52817069 | |
Davide Andreoli | 9be98bb979 | |
Davide Andreoli | 4bc8d227a9 | |
Davide Andreoli | bbb747eb5e | |
Davide Andreoli | 728ff202e4 | |
Davide Andreoli | e6d3a88349 | |
Davide Andreoli | 3ebc6f21e9 | |
Davide Andreoli | 419405e456 | |
Davide Andreoli | f9e8906724 | |
Davide Andreoli | 3f064401a1 | |
Davide Andreoli | 94a4b56444 | |
Davide Andreoli | 625503bf11 | |
Davide Andreoli | 7b135c2012 | |
Davide Andreoli | 84a09b61b6 | |
Davide Andreoli | 6d2e2e9d8e | |
Davide Andreoli | 0873394260 | |
Davide Andreoli | 027505f45a | |
Davide Andreoli | 8d99fc8b40 | |
Davide Andreoli | 863efc19eb | |
Davide Andreoli | 1910563604 | |
Davide Andreoli | 6ff9998258 | |
Davide Andreoli | 64c1d33c9f | |
Davide Andreoli | 1746a0acdd | |
Davide Andreoli | 5c8bb29d78 | |
Davide Andreoli | a4f2cc37cc | |
Davide Andreoli | e4a3616613 | |
Davide Andreoli | bb8deff060 | |
Davide Andreoli | 01105db325 | |
Davide Andreoli | 08170d1fd4 | |
Davide Andreoli | 1a3fa101e1 | |
Davide Andreoli | 03f2f286e2 | |
Davide Andreoli | c4bbbcf3dc | |
Davide Andreoli | c0f2f5b379 | |
Davide Andreoli | 99c5e47ca5 | |
Davide Andreoli | 3a3cb85634 | |
Davide Andreoli | 379aef8950 | |
Davide Andreoli | fd1167e8cc | |
Davide Andreoli | 6fe657d979 | |
Davide Andreoli | 9b50d34db3 | |
Davide Andreoli | 9e2ad3382e | |
Davide Andreoli | b642c60b84 | |
Davide Andreoli | d6ab0de2dd | |
Davide Andreoli | 19ecb703a5 | |
Davide Andreoli | 709bb23cd3 | |
Davide Andreoli | 1eaa0f4384 | |
Davide Andreoli | 1c6b3ac0c3 | |
Davide Andreoli | 8fd9a0021e | |
Davide Andreoli | 71ed20ebf6 | |
Davide Andreoli | e8c61e7690 | |
Davide Andreoli | b6ca4649a6 | |
Davide Andreoli | 8ba699f89b | |
Davide Andreoli | 2582c32800 | |
Davide Andreoli | 7ca64616ae | |
Davide Andreoli | 60e7e94889 | |
Davide Andreoli | 5e8a644f24 | |
Davide Andreoli | 3be938511f | |
Davide Andreoli | d3f98802b0 | |
Davide Andreoli | da1807c379 | |
Davide Andreoli | 5668d30498 | |
Davide Andreoli | 8f05e1c177 | |
Davide Andreoli | 90cead3b12 | |
Kai Huuhko | 40cedb0e4b | |
Davide Andreoli | 6fe9080af1 | |
Kai Huuhko | 953a77dcaf |
|
@ -1,5 +1,6 @@
|
|||
*.py[co]
|
||||
MANIFEST
|
||||
installed_files-*.txt
|
||||
|
||||
# Packages
|
||||
*.egg
|
||||
|
@ -27,4 +28,9 @@ pip-log.txt
|
|||
# Cython generated files
|
||||
efl/*/*.c
|
||||
efl/*/*.h
|
||||
!efl/dbus_mainloop/e_dbus.*
|
||||
efl/*/*.html
|
||||
|
||||
# Various editors trash
|
||||
.idea/
|
||||
.vscode/
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
[MESSAGES CONTROL]
|
||||
|
||||
#enable=
|
||||
|
||||
disable=consider-using-f-string, # for older python we still support
|
||||
redundant-u-string-prefix, # for older python we still support
|
||||
invalid-name, # seems too pedantic to me
|
||||
missing-function-docstring,
|
||||
missing-class-docstring,
|
||||
missing-module-docstring,
|
174
CODING
174
CODING
|
@ -1,3 +1,28 @@
|
|||
TODO
|
||||
====
|
||||
* Automatically build and publish binary wheels on pypi
|
||||
- for py: 36,37,38,39,310
|
||||
- for linux x86 and rpi
|
||||
- see https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/
|
||||
- see https://github.com/pypa/manylinux
|
||||
- also include efl itsef in the wheels? PySide is doing this
|
||||
|
||||
* Drop python 2 compatibility
|
||||
- Switch to cython3
|
||||
- remove all the workarounds for py2 (see strings and enums)
|
||||
|
||||
* Improved editors support, at least on VSCode and PyCharm
|
||||
|
||||
* Try to implement better the elementary module, removing
|
||||
the __init__ module hack (that create problems in the docs)
|
||||
|
||||
* Make the examples a first citizen!
|
||||
- install them with python efl
|
||||
- make them easily runnable
|
||||
- show them in the docs
|
||||
- show the code inside the examples themself?
|
||||
- make the code editable on the fly?
|
||||
|
||||
|
||||
Style
|
||||
=====
|
||||
|
@ -8,6 +33,60 @@ Style
|
|||
* When comparing C pointers with NULL, use == and != instead of the python
|
||||
operator "is". This makes a visual distinction between python and C code.
|
||||
|
||||
* For long lines that do not fit in the 80 cols please use only the first
|
||||
raccomandation from PEP-8 (Aligned with opening delimiter). Example:
|
||||
Yes:
|
||||
foo = long_function_name(var_one, var_two,
|
||||
var_three, var_four)
|
||||
No:
|
||||
foo = long_function_name(
|
||||
var_one, var_two,
|
||||
var_three, var_four)
|
||||
|
||||
This to keep new code consistent with the rest of the bindings and to
|
||||
try to match the style of the C efl code style as much as possible.
|
||||
...also because I found it more readable and I like it more :P -davemds-
|
||||
|
||||
|
||||
Documentation cheatsheet
|
||||
========================
|
||||
|
||||
* Links:
|
||||
|
||||
:class:`List` (for classes)
|
||||
:func:`elm_list_go` (for functions)
|
||||
:attr:`homogeneous` (for properties)
|
||||
:ref:`Elm_List_Mode` (for enums)
|
||||
:data:`ELM_LIST_LIMIT` (for enum values)
|
||||
|
||||
:func:`efl.evas.Object.delete` (for items not in current scope)
|
||||
:func:`~efl.evas.Object.delete` (will show it short, just "delete")
|
||||
|
||||
* Formatting:
|
||||
|
||||
``ELM_LIST_SCROLL`` (for enum values, bools and None)
|
||||
|
||||
|
||||
* Versions:
|
||||
|
||||
.. versionadded:: 1.15
|
||||
|
||||
.. versionchanged:: 1.15
|
||||
Description of the change.
|
||||
|
||||
.. deprecated:: 1.15
|
||||
Use the blah, blah way instead.
|
||||
|
||||
* Notes:
|
||||
|
||||
.. seealso:: :py:attr:`mode`
|
||||
|
||||
.. note:: Some text to be noted, blah, blah, blah,
|
||||
some more information for this note, etc.
|
||||
|
||||
.. warning:: Same as note, but the box will be red
|
||||
some more information for this warning, etc.
|
||||
|
||||
|
||||
Design patterns
|
||||
===============
|
||||
|
@ -44,63 +123,54 @@ Tips
|
|||
Release process instructions
|
||||
============================
|
||||
|
||||
* Announce at enlightenment-release@lists.sourceforge.net that you are planning
|
||||
for the release
|
||||
* Change versions in the top part of setup.py (ex: 1.9 and 1.9.0)
|
||||
* Raise efl/elm min requirements
|
||||
* Update README.rst
|
||||
* Update the changes.html file
|
||||
setup.py build_doc -b changes ...and manually merge
|
||||
* Git push and wait jenkins to generate the 2 tarballs
|
||||
* Test the generated tarballs
|
||||
* scp tarballs to
|
||||
download.enlightenment.org/srv/web/download.enlightenment.org/public_html/pre-releases
|
||||
* Announce at enlightenment-release@lists.sourceforge.net that tarballs are
|
||||
ready for testing
|
||||
* use "api_coverage.py --python elementary" to see the missing bindings
|
||||
|
||||
... wait 24 hours, fix any issues found. In the mean time you can prepare the
|
||||
release announcement for phame/ml.
|
||||
* Version:
|
||||
- change versions in efl/__init__.py (ex: 1.9.0)
|
||||
- update EFL_MIN_VER in setup.py (if needed)
|
||||
|
||||
* Update the ChangeLog file:
|
||||
- setup.py build_doc -b changes ...and manually merge from the html file
|
||||
|
||||
* Generate the source (tar) and binary (wheel) distributions:
|
||||
- make maintainer-clean (just to be sure nothing is cached)
|
||||
- make dist
|
||||
|
||||
* Test the generated tarball and wheel:
|
||||
- the targz must work by extracting and running: python setup.py install [--user]
|
||||
- the targz must be installable using: pip install python-efl-1.9.0.tar.gz
|
||||
- the wheel must be installable using: pip install python_efl-1.9.0-xxxx.whl
|
||||
|
||||
* Publish the 2 tar archive on e.org:
|
||||
- scp tarballs & md5sums to:
|
||||
download.enlightenment.org:/srv/web/download.enlightenment.org/rel/bindings/python/
|
||||
- update download link on the wiki (www.enlightenment.org/download)
|
||||
|
||||
* Publish the .tar.gz archive on pypi:
|
||||
- twine upload python-efl-1.9.0.tar.gz [--repository testpypy]
|
||||
- TODO: also upload binary wheels for linux py36,37,38,39,310 (see manylinux on pypa)
|
||||
|
||||
* Documentation:
|
||||
- make doc (check that inheritance graphs are there)
|
||||
- scp the generated html documentation to:
|
||||
download.enlightenment.org:/srv/web/docs.enlightenment.org/python-efl/1.9.0/
|
||||
- update the 'current' link on the server (ssh)
|
||||
|
||||
* ssh to dl.e.org and mv the tarballs to
|
||||
/srv/web/download.enlightenment.org/rel/bindings/python
|
||||
* Create and push the tag for the release
|
||||
git tag -a v1.9.0 && git push origin v1.9.0
|
||||
- git tag -a v1.9.0 && git push origin v1.9.0
|
||||
|
||||
* Create and push the branch for stable backporting
|
||||
git branch python-efl-1.9 && git push origin python-efl-1.9
|
||||
* Publish the blog post on phame (Official Announcements)
|
||||
* Announce the release to release@lists.enlightenment.org
|
||||
(an alias for e-announce etc.)
|
||||
* Update download link on website (clone website/www.git, edit, commit, push)
|
||||
* Change versions again in setup.py (ex: 1.10 and 1.9.99)
|
||||
* Raise efl and elementary requirements in setup.py (to 1.9.99)
|
||||
|
||||
more info at:
|
||||
phab.enlightenment.org/w/release_procedure/
|
||||
* Announce the release to release@lists.enlightenment.org and
|
||||
enlightenment-release@lists.sourceforge.net
|
||||
|
||||
* Change versions again in efl/__init__.py (ex: 1.9.99)
|
||||
|
||||
for more info:
|
||||
--------------
|
||||
* packaging.python.org
|
||||
* phab.enlightenment.org/w/release_procedure/
|
||||
* phab.enlightenment.org/w/hosting/ssh/
|
||||
|
||||
|
||||
Discussion
|
||||
==========
|
||||
|
||||
* Internal utility functions used in the bindings must start with an
|
||||
underscore and must have the shortest name as possible.
|
||||
^
|
||||
This needs further discussion/expansion.
|
||||
|
||||
When we define a function with cdef it is not exposed to Python API.
|
||||
This should be explicit enough to not need the underscore prefix, which
|
||||
at best looks ugly, and at worst just plain confusing.
|
||||
|
||||
A function name should summarize its functionality in one clear text,
|
||||
short sentence. We have both too long and too short names. And I admit to
|
||||
being guilty of adding many of both.
|
||||
|
||||
Let's build up a short review so we can see where we stand with this and
|
||||
make necessary corrections.
|
||||
|
||||
/ kuuko
|
||||
|
||||
|
||||
The underscore usage is a coding standard in all the EFL, we should try
|
||||
to follow the efl style also here (where is possible and make sense)
|
||||
|
||||
/ davemds
|
||||
|
|
|
@ -0,0 +1,963 @@
|
|||
===================
|
||||
2023-10-08 v1.26.1
|
||||
===================
|
||||
|
||||
Maintenance release:
|
||||
* rebuilt using Cython 0.29.34 to fix install on python 3.11
|
||||
|
||||
|
||||
===================
|
||||
2022-02-27 v1.26.0
|
||||
===================
|
||||
|
||||
Changes:
|
||||
* Switched to setuptools for the build system (can now install from pip again)
|
||||
* Dropped py2.6 support, minimum is now 2.7
|
||||
* Deprecated python2 support, with a big-fat-slow warning
|
||||
* Improved documentation
|
||||
|
||||
Fixes:
|
||||
* Fixed a memory allocation error in EvasSmart
|
||||
|
||||
|
||||
===================
|
||||
2020-09-24 v1.25.0
|
||||
===================
|
||||
|
||||
Changes:
|
||||
* Switched to Cython 0.29.21 for the tarball generation
|
||||
|
||||
|
||||
===================
|
||||
2020-04-30 v1.24.0
|
||||
===================
|
||||
|
||||
Changes:
|
||||
* Switched to Cython 0.29.16 for the tarball generation
|
||||
* No more pypi packages uploaded, you must install from tarball
|
||||
|
||||
|
||||
===================
|
||||
2019-10-06 v1.23.0
|
||||
===================
|
||||
|
||||
Changes:
|
||||
* Switched to Cython 0.29.13 for the tarball generation
|
||||
|
||||
|
||||
===================
|
||||
2019-04-23 v1.22.0
|
||||
===================
|
||||
|
||||
Changes:
|
||||
* Switched to Cython 0.29.7 for the tarball generation
|
||||
|
||||
|
||||
===================
|
||||
2018-08-24 v1.21.0
|
||||
===================
|
||||
|
||||
BREAKS:
|
||||
* systray.pxi do not work anymore as the widget has been removed from efl.
|
||||
The widget has been completly removed and the function elm_need_systray
|
||||
now always return False that means systray is not available.
|
||||
Apologies for the inconvenient.
|
||||
|
||||
Changes:
|
||||
* Switched to Cython 0.28.4 for the tarball generation, should fix build
|
||||
issues with python3.7
|
||||
|
||||
Additions:
|
||||
* ecore.ECORE_EXE_ISOLATE_IO
|
||||
* edje.part_text_prediction_hint_hash_del
|
||||
* edje.part_text_prediction_hint_hash_set
|
||||
* elm.Entry.prediction_hint_hash_del
|
||||
* elm.Entry.prediction_hint_hash_set
|
||||
* elm.Ctxpopup.item_insert_after
|
||||
* elm.Ctxpopup.item_insert_before
|
||||
|
||||
|
||||
===================
|
||||
2017-05-06 v1.20.0
|
||||
===================
|
||||
|
||||
Fixes:
|
||||
* ecore.input and ecore.x can now coexsist
|
||||
|
||||
Changes:
|
||||
* ecore.Poller is no more an Eo object in C (nothing should be changed in py)
|
||||
* removed edje.Object custom __repr__ implementation
|
||||
* Use Cython 23.5 to generate the C source in dist tarball (see T5589)
|
||||
|
||||
Additions:
|
||||
* elm.Entry.prediction_hint
|
||||
* elm.Genlist.multi_select_mode
|
||||
* elm.Menu.open()
|
||||
* elm.Spinner.callback_max_reached_add()
|
||||
* elm.Spinner.callback_max_reached_del()
|
||||
* edje.part_text_prediction_hint_set()
|
||||
* evas.Map.coords_get()
|
||||
|
||||
|
||||
===================
|
||||
2017-04-18 v1.19.0
|
||||
===================
|
||||
|
||||
Fixes:
|
||||
* Fixes for cython 0.25 compatibility
|
||||
* elm.font_properties_get
|
||||
* elm.Gengrid.item_insert_after now work as expected
|
||||
|
||||
Changes:
|
||||
* Removed ecore warning about subprocess incompatibility, with test to prove it
|
||||
* Emotion: changed default module_name to "gstreamer1"
|
||||
* elm.font_properties_free: Changed to no-op as we now do the free
|
||||
automatically when there are no more references to the FontProperties object
|
||||
* elm.Panel.scrollable_content_size is now also readable
|
||||
* EcoreConUrl is no more an Eo object in C
|
||||
|
||||
Additions:
|
||||
* evas.Image.load_head_skip
|
||||
* elm.ELM_INPUT_PANEL_LAYOUT_VOICE
|
||||
* elm.ELM_CALENDAR_REVERSE_DAILY
|
||||
* elm.Calendar.date_max
|
||||
* elm.Calendar.date_min
|
||||
* elm.GengridItem.custom_size
|
||||
* elm.Image.async_open
|
||||
* elm.Image.callback_load_cancel_add
|
||||
* elm.Image.callback_load_error_add
|
||||
* elm.Image.callback_load_open_add
|
||||
* elm.Image.callback_load_ready_add
|
||||
* elm.Naviframe.callback_item_activated_add
|
||||
* elm.Panel.callback_toggled_add
|
||||
* elm.Progressbar.is_pulsing
|
||||
* elm.Spinner.callback_drag_start_add
|
||||
* elm.Spinner.callback_drag_stop_add
|
||||
|
||||
|
||||
===================
|
||||
2016-08-22 v1.18.0
|
||||
===================
|
||||
|
||||
Fixes:
|
||||
* Fixed (workaround) dbus crash on python >= 3.5
|
||||
* Fixed Logger module to not fail on unicode error messages
|
||||
|
||||
Changes:
|
||||
* Changed enums implementation to gain compatibility with Cython > 0.22
|
||||
* Docs: Allow to skip last_updated and sphinx_version
|
||||
* elm.Combobox: The combobox widget has been deprecated.
|
||||
* elm.Photo.editable property is now also readable
|
||||
* elm.Photo.fill_inside property is now also readable
|
||||
* elm.Photo.size property is now also readable
|
||||
|
||||
Additions:
|
||||
* ecore.Exe.is_deleted
|
||||
* ecore.FdHandler.is_deleted
|
||||
* edje.Edje.part_box_insert_after
|
||||
* elm.Configuration.accel_preference_override
|
||||
* elm.Configuration.first_item_focus_on_first_focusin
|
||||
* elm.Configuration.font_hint_type
|
||||
* elm.Configuration.icon_theme
|
||||
* elm.Configuration.popup_scrollable
|
||||
* elm.Configuration.scroll_accel_factor
|
||||
* elm.Configuration.scroll_animation_disabled
|
||||
* elm.Configuration.vsync
|
||||
* elm.Configuration.web_backend
|
||||
* elm.Entry.file_text_format
|
||||
* elm.Entry.select_allow
|
||||
* elm.Entry.select_region
|
||||
* elm.GengridItem.all_contents_unset
|
||||
* elm.Genlist.filtered_items_count
|
||||
* elm.GenlistItem.all_contents_unset
|
||||
* elm.List.multi_select_mode (and the Elm_Object_Multi_Select_Mode enum)
|
||||
* elm.Object.focus_move_policy_automatic
|
||||
* elm.Popup.align
|
||||
* elm.Popup.scrollable
|
||||
* elm.Slider.range
|
||||
* elm.Slider.range_enabled
|
||||
* elm.Slider.indicator_show_on_focus
|
||||
* elm.Transit.revert
|
||||
* elm.Window.noblank
|
||||
|
||||
|
||||
==================
|
||||
2016-01-7 v1.17.0
|
||||
==================
|
||||
|
||||
Fixes:
|
||||
* Fixed compatibility with python 3.5 (utils.deprecated was broken)
|
||||
* Various ref leaks fixed in elementary
|
||||
* Multibuttonentry filter callback
|
||||
|
||||
Additions:
|
||||
* ecore_input Module
|
||||
* ecore_con Module
|
||||
* ecore_con.Url Class
|
||||
* ecore_con.Lookup Class
|
||||
* evas.Object.paragraph_direction
|
||||
* evas.EVAS_BIDI_DIRECTION_INHERIT
|
||||
* edje.Edje.color_class_clear
|
||||
* edje.Edje.size_class_del
|
||||
* edje.Edje.size_class_get
|
||||
* edje.Edje.size_class_set
|
||||
* edje.Edje.text_class_del
|
||||
* edje.size_class_del
|
||||
* edje.size_class_get
|
||||
* edje.size_class_list
|
||||
* edje.size_class_set
|
||||
* ethumb Module
|
||||
* ethumb.Ethumb Class
|
||||
* ethumb_client Module
|
||||
* ethumb_client.EthumbClient Class
|
||||
* elm.Combobox Class
|
||||
* elm.Configuration.context_menu_disabled
|
||||
* elm.Configuration.profile_derived_add
|
||||
* elm.Configuration.profile_derived_del
|
||||
* elm.Configuration.profile_exists
|
||||
* elm.Configuration.profile_list_full
|
||||
* elm.Configuration.profile_save
|
||||
* elm.Ctxpopup.callback_geometry_update_add
|
||||
* elm.ELM_GENGRID_ITEM_SCROLLTO_BOTTOM
|
||||
* elm.Gengrid.drag_item_container_add
|
||||
* elm.Gengrid.drag_item_container_del
|
||||
* elm.Gengrid.drop_item_container_add
|
||||
* elm.Gengrid.drop_item_container_del
|
||||
* elm.ELM_GENLIST_ITEM_SCROLLTO_BOTTTOM
|
||||
* elm.Genlist.callback_filter_done_add
|
||||
* elm.Genlist.drag_item_container_add
|
||||
* elm.Genlist.drag_item_container_del
|
||||
* elm.Genlist.drop_item_container_add
|
||||
* elm.Genlist.drop_item_container_del
|
||||
* elm.Genlist.filter
|
||||
* elm.MultiButtonEntry.filter_remove
|
||||
* elm.Notify.callback_dismissed_add
|
||||
* elm.Notify.dismiss
|
||||
* elm.Object.callback_moved_add
|
||||
* elm.Object.drag_action_set
|
||||
* elm.Object.drag_start
|
||||
* elm.Object.drop_target_add
|
||||
* elm.Object.drop_target_del
|
||||
* elm.Popup.callback_dismissed_add
|
||||
* elm.Popup.dismiss
|
||||
|
||||
|
||||
===================
|
||||
2015-11-14 v1.16.0
|
||||
===================
|
||||
|
||||
Additions:
|
||||
|
||||
* elm.Configuration.scroll_thumbscroll_smooth_amount
|
||||
* elm.Configuration.scroll_thumbscroll_smooth_start
|
||||
* elm.Configuration.scroll_thumbscroll_smooth_time_window
|
||||
* elm.Genlist.callback_changed_add
|
||||
* elm.GenlistItem.data is now also writable
|
||||
* elm.Object.focus_next_item_get
|
||||
* elm.Object.focus_next_item_set
|
||||
* elm.Object.focus_region_show_mode
|
||||
* elm.Object.tooltip_orient
|
||||
* elm.ObjectItem.focus_next_item_get
|
||||
* elm.ObjectItem.focus_next_item_set
|
||||
* elm.ObjectItem.focus_next_object_get
|
||||
* elm.ObjectItem.focus_next_object_set
|
||||
|
||||
|
||||
===================
|
||||
2015-08-05 v1.15.0
|
||||
===================
|
||||
|
||||
Fixes:
|
||||
|
||||
* elm.Entry: Fixed name of the callback_rejected_del function
|
||||
* Fixed build on OSX
|
||||
* Fixed build when ecore-x is not available
|
||||
* Fixed module init from embedded interpreter
|
||||
|
||||
|
||||
Changes:
|
||||
|
||||
* Elm: Unify modules into a monolithic module
|
||||
|
||||
|
||||
Additions:
|
||||
|
||||
* elm.Configuration.transition_duration_factor
|
||||
* elm.Window.autohide
|
||||
* elm.ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN
|
||||
* elm.Entry.callback_context_open_add/del
|
||||
* elm.ELM_FOCUS_MOVE_POLICY_KEY_ONLY
|
||||
* elm.Object.focus_move_policy
|
||||
* elm.Scrollable.wheel_disabled
|
||||
* evas.Textblock.obstacle_add
|
||||
* evas.Textblock.obstacle_del
|
||||
* evas.Textblock.obstacles_update
|
||||
* evas.EVAS_CALLBACK_CANVAS_VIEWPORT_RESIZE
|
||||
|
||||
|
||||
===================
|
||||
2015-05-07 v1.14.0
|
||||
===================
|
||||
|
||||
Fixes:
|
||||
|
||||
* Fixed evas.Textgrid to not leak on cellrow_set()
|
||||
|
||||
|
||||
Improvements:
|
||||
|
||||
* Re-added evas.SmartObject (with incompatible API compared to the earlier
|
||||
incarnation) and made elm.Object inherit from it.
|
||||
* Better init/shutdown management in all modules, no more need to
|
||||
manually call those functions (no harm in doing it though).
|
||||
|
||||
|
||||
Changes:
|
||||
|
||||
* elm.List.callback_highlighted_add: Added item param to func
|
||||
* elm.List.callback_unhighlighted_add: Added item param to func
|
||||
* elm.Toolbar.callback_clicked_add: Added item param to func
|
||||
* elm.Toolbar.callback_longpressed_add: Added item param to func
|
||||
* elm.Slideshow: item_data are now a single value, instead of args/kargs,
|
||||
like is implemented in Gengrid/Genlist
|
||||
|
||||
|
||||
Additions:
|
||||
|
||||
* evas.Smart
|
||||
* evas.Image.orient
|
||||
* edje.Edje.text_class_get
|
||||
* edje.text_class_get
|
||||
* elm.systray
|
||||
* elm.Configuration.window_auto_focus_animate
|
||||
* elm.Configuration.window_auto_focus_enable
|
||||
* elm.Image.memfile_set
|
||||
* elm.MultiButtonEntry.callback_item_longpressed_add
|
||||
* elm.MultiButtonEntry.callback_item_longpressed_del
|
||||
* elm.NaviframeItem.pop_cb_set
|
||||
* elm.Photocam.image_orient
|
||||
* elm.Scrollable.loop
|
||||
* elm.Slider.indicator_visible_mode
|
||||
* elm.Transit.go_in
|
||||
* elm.on_config_all_changed
|
||||
* elm.on_ethumb_connect
|
||||
* elm.on_policy_changed
|
||||
* elm.on_process_background
|
||||
* elm.LayoutClass.file is now also readable
|
||||
* elm.Video.file is now also readable
|
||||
|
||||
|
||||
Deprecation:
|
||||
|
||||
* evas.Rect.intercepts: Use intersects() instead
|
||||
|
||||
|
||||
===================
|
||||
2015-02-09 v1.13.0
|
||||
===================
|
||||
|
||||
Improvements:
|
||||
|
||||
* better docs for everything
|
||||
* some new elm examples/tests
|
||||
* new efl.utils.setup helper module to simplify user setup.py
|
||||
* new uninstall setup.py command
|
||||
* fixed elm.Entry.cursor_content_get() to not crash when called
|
||||
|
||||
|
||||
Changes:
|
||||
|
||||
* raised cython requirements to 0.21
|
||||
* ecore.x module renamed to ecore_x
|
||||
* removed evas.SmartObject class, it was broken
|
||||
|
||||
|
||||
Additions:
|
||||
|
||||
* efl.utils.setup module
|
||||
* elm.Configuration.slider_indicator_visible_mode
|
||||
* elm.Gengrid.callback_clicked_right_add
|
||||
* elm.Genlist.callback_clicked_right_add
|
||||
* elm.List.callback_clicked_right_add
|
||||
* elm.Scrollable.step_size
|
||||
* elm.Table.align
|
||||
* elm.Theme.group_base_list_get
|
||||
* elm.Transit.tween_mode_factor_n
|
||||
* elm.ELM_TRANSIT_TWEEN_MODE_DIVISOR_INTERP
|
||||
* elm.ELM_TRANSIT_TWEEN_MODE_BOUNCE
|
||||
* elm.ELM_TRANSIT_TWEEN_MODE_SPRING
|
||||
* elm.ELM_TRANSIT_TWEEN_MODE_BEZIER_CURVE
|
||||
* elm.DialogWindow
|
||||
* elm.Window.callback_theme_changed_add
|
||||
* evas.Map.util_object_move_sync
|
||||
* evas.Object.size_hint_expand
|
||||
* evas.Object.size_hint_fill
|
||||
* evas.EXPAND_BOTH
|
||||
* evas.EXPAND_HORIZ
|
||||
* evas.EXPAND_VERT
|
||||
* evas.FILL_BOTH
|
||||
* evas.FILL_HORIZ
|
||||
* evas.FILL_VERT
|
||||
|
||||
|
||||
Deprecation:
|
||||
|
||||
* elm.Configuration.engine
|
||||
* elm.Configuration.preferred_engine
|
||||
|
||||
|
||||
===================
|
||||
2014-11-23 v1.12.0
|
||||
===================
|
||||
|
||||
Additions:
|
||||
|
||||
* Edje.base_scale
|
||||
* Edje.part_text_input_hint_get
|
||||
* Edje.part_text_input_hint_set
|
||||
* elm.ELM_PROCESS_STATE_FOREGROUND
|
||||
* elm.ELM_PROCESS_STATE_BACKGROUND
|
||||
* elm.process_state_get
|
||||
* elm.ELM_INPUT_HINT_NONE
|
||||
* elm.ELM_INPUT_HINT_AUTO_COMPLETE
|
||||
* elm.ELM_INPUT_HINT_SENSITIVE_DATA
|
||||
* elm.ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_NORMAL
|
||||
* elm.ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_FILENAME
|
||||
* elm.ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_PERSON_NAME
|
||||
* elm.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_NORMAL
|
||||
* elm.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED
|
||||
* elm.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_DECIMAL
|
||||
* elm.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED_AND_DECIMAL
|
||||
* elm.ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NORMAL
|
||||
* elm.ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NUMBERONLY
|
||||
* elm.Entry.input_hint
|
||||
* elm.Fileselector.current_name
|
||||
* elm.Panel.scrollable
|
||||
* elm.Panel.scrollable_content_size
|
||||
|
||||
|
||||
===================
|
||||
2014-09-14 v1.11.0
|
||||
===================
|
||||
|
||||
Additions:
|
||||
|
||||
* ecore.x.screensaver_blank_get
|
||||
* ecore.x.screensaver_blank_set
|
||||
* ecore.x.screensaver_custom_blanking_disable
|
||||
* ecore.x.screensaver_custom_blanking_enable
|
||||
* ecore.x.screensaver_event_available_get
|
||||
* ecore.x.screensaver_event_listen_set
|
||||
* ecore.x.screensaver_expose_get
|
||||
* ecore.x.screensaver_expose_set
|
||||
* ecore.x.screensaver_idle_time_get
|
||||
* ecore.x.screensaver_interval_get
|
||||
* ecore.x.screensaver_interval_set
|
||||
* ecore.x.screensaver_resume
|
||||
* ecore.x.screensaver_set
|
||||
* ecore.x.screensaver_supend
|
||||
* ecore.x.screensaver_timeout_get
|
||||
* ecore.x.screensaver_timeout_set
|
||||
* ELM_GLOB_MATCH_NO_ESCAPE
|
||||
* ELM_GLOB_MATCH_PATH
|
||||
* ELM_GLOB_MATCH_PERIOD
|
||||
* ELM_GLOB_MATCH_NOCASE
|
||||
* ELM_GENGRID_REORDER_TYPE_NORMAL
|
||||
* ELM_GENGRID_REORDER_TYPE_SWAP
|
||||
* elm.Gengrid.reorder_type
|
||||
* elm.Gengrid.search_by_text_item_get
|
||||
* elm.Genlist.search_by_text_item_get
|
||||
* elm.Map.region_zoom_bring_in
|
||||
* elm.Panes.content_left_min_relative_size
|
||||
* elm.Panes.content_left_min_size
|
||||
* elm.Panes.content_right_min_relative_size
|
||||
* elm.Panes.content_right_min_size
|
||||
* elm.Toolbar.callback_selected_add
|
||||
* elm.Toolbar.callback_unselected_add
|
||||
* Emotion.on_open_done_add
|
||||
* Emotion.on_open_done_del
|
||||
* Emotion.on_playback_started_add
|
||||
* Emotion.on_playback_started_del
|
||||
* Emotion.on_position_load_failed_add
|
||||
* Emotion.on_position_load_failed_del
|
||||
* Emotion.on_position_load_succeed_add
|
||||
* Emotion.on_position_load_succeed_del
|
||||
* Emotion.on_position_save_failed_add
|
||||
* Emotion.on_position_save_failed_del
|
||||
* Emotion.on_position_save_succeed_add
|
||||
* Emotion.on_position_save_succeed_del
|
||||
* Emotion.on_position_update_add
|
||||
* Emotion.on_position_update_del
|
||||
|
||||
===================
|
||||
2014-05-31 v1.10.0
|
||||
===================
|
||||
|
||||
Additions:
|
||||
|
||||
* elm.Configuration.accel_preference
|
||||
* elm.Configuration.atspi_mode
|
||||
* elm.Configuration.audio_mute_get
|
||||
* elm.Configuration.audio_mute_set
|
||||
* elm.Configuration.color_classes_list
|
||||
* elm.Configuration.color_overlay_apply
|
||||
* elm.Configuration.color_overlay_list
|
||||
* elm.Configuration.color_overlay_set
|
||||
* elm.Configuration.color_overlay_unset
|
||||
* elm.Configuration.focus_autoscroll_mode
|
||||
* elm.Configuration.focus_highlight_clip_disabled
|
||||
* elm.Configuration.focus_move_policy
|
||||
* elm.Configuration.item_select_on_focus_disabled
|
||||
* elm.Configuration.magnifier_enabled
|
||||
* elm.Configuration.magnifier_scale
|
||||
* elm.ELM_INPUT_PANEL_LAYOUT_DATETIME
|
||||
* elm.ELM_INPUT_PANEL_LAYOUT_EMOTICON
|
||||
* elm.ELM_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN
|
||||
* elm.ELM_SYS_NOTIFY_CLOSED_EXPIRED
|
||||
* elm.ELM_SYS_NOTIFY_CLOSED_DISMISSED
|
||||
* elm.ELM_SYS_NOTIFY_CLOSED_REQUESTED
|
||||
* elm.ELM_SYS_NOTIFY_CLOSED_UNDEFINED
|
||||
* elm.ELM_SYS_NOTIFY_URGENCY_LOW
|
||||
* elm.ELM_SYS_NOTIFY_URGENCY_NORMAL
|
||||
* elm.ELM_SYS_NOTIFY_URGENCY_CRITICAL
|
||||
* elm.sys_notify_close
|
||||
* elm.sys_notify_send
|
||||
* elm.ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT
|
||||
* elm.ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL
|
||||
* elm.ELM_OBJECT_MULTI_SELECT_MODE_MAX
|
||||
* elm.Gengrid.callback_item_focused_add
|
||||
* elm.Gengrid.callback_item_reorder_anim_start_add
|
||||
* elm.Gengrid.callback_item_reorder_anim_stop_add
|
||||
* elm.Gengrid.callback_item_unfocused_add
|
||||
* elm.Gengrid.multi_select_mode
|
||||
* elm.Gengrid.page_relative
|
||||
* elm.Gengrid.page_size
|
||||
* elm.Gengrid.reorder_mode_start
|
||||
* elm.Gengrid.reorder_mode_stop
|
||||
* elm.Gengrid.wheel_disabled
|
||||
* elm.Genlist.callback_item_focused_add
|
||||
* elm.Genlist.callback_item_unfocused_add
|
||||
* elm.Hoversel.callback_item_focused_add
|
||||
* elm.Hoversel.callback_item_unfocused_add
|
||||
* elm.List.callback_item_focused_add
|
||||
* elm.List.callback_item_unfocused_add
|
||||
* elm.ELM_FOCUS_MOVE_POLICY_CLICK
|
||||
* elm.ELM_FOCUS_MOVE_POLICY_IN
|
||||
* elm.ELM_FOCUS_AUTOSCROLL_MODE_SHOW
|
||||
* elm.ELM_FOCUS_AUTOSCROLL_MODE_NONE
|
||||
* elm.ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN
|
||||
* elm.Object.focused_item
|
||||
* elm.Object.scroll_item_loop_enabled
|
||||
* elm.ObjectItem.focus
|
||||
* elm.ObjectItem.style
|
||||
* elm.ObjectItem.track_count
|
||||
* elm.ObjectItem.track_object
|
||||
* elm.Popup.callback_item_focused_add
|
||||
* elm.Popup.callback_item_unfocused_add
|
||||
* elm.Toolbar.callback_item_focused_add
|
||||
* elm.Toolbar.callback_item_unfocused_add
|
||||
|
||||
|
||||
Deprecations:
|
||||
|
||||
* elm.Datetime.callback_languge_changed_add:
|
||||
Use callback_language_changed_add instead.
|
||||
|
||||
|
||||
==================
|
||||
2014-03-05 v1.9.0
|
||||
==================
|
||||
|
||||
Additions:
|
||||
|
||||
* elm.Clock.pause
|
||||
* elm.Colorselector.palette_items_get
|
||||
* elm.Colorselector.palette_selected_item_get
|
||||
* elm.ColorselectorPaletteItem.selected
|
||||
* elm.Ctxpopup.auto_hide_disabled
|
||||
* elm.Entry.callback_rejected_add
|
||||
* elm.Entry.input_panel_show_on_demand
|
||||
* elm.ELM_FILESELECTOR_SORT_BY_FILENAME_ASC
|
||||
* elm.ELM_FILESELECTOR_SORT_BY_FILENAME_DESC
|
||||
* elm.ELM_FILESELECTOR_SORT_BY_TYPE_ASC
|
||||
* elm.ELM_FILESELECTOR_SORT_BY_TYPE_DESC
|
||||
* elm.ELM_FILESELECTOR_SORT_BY_SIZE_ASC
|
||||
* elm.ELM_FILESELECTOR_SORT_BY_SIZE_DESC
|
||||
* elm.ELM_FILESELECTOR_SORT_BY_MODIFIED_ASC
|
||||
* elm.ELM_FILESELECTOR_SORT_BY_MODIFIED_DESC
|
||||
* elm.Fileselector.custom_filter_append
|
||||
* elm.Fileselector.sort_method
|
||||
* elm.Fileselector.thumbnail_size
|
||||
* elm.GenlistItem.subitems_count
|
||||
* elm.GenlistItem.subitems_get
|
||||
* elm.Hoversel.callback_expanded_add
|
||||
* elm.Label.slide_speed
|
||||
* elm.LayoutClass.content_swallow_list_get
|
||||
* elm.Mapbuf.point_color_get
|
||||
* elm.Mapbuf.point_color_set
|
||||
* elm.MultiButtonEntry.format_function_set
|
||||
* elm.NaviframeItem.title_enabled
|
||||
* elm.NaviframeItem.title_enabled_get
|
||||
* elm.NaviframeItem.title_enabled_set
|
||||
* elm.Object.focus_highlight_style
|
||||
* elm.Object.tooltip_move_freeze_get
|
||||
* elm.Object.tooltip_move_freeze_pop
|
||||
* elm.Object.tooltip_move_freeze_push
|
||||
* elm.Window.wm_rotation_available_rotations
|
||||
* elm.Window.wm_rotation_manual_done
|
||||
* elm.Window.wm_rotation_manual_rotation_done
|
||||
* elm.Window.wm_rotation_preferred_rotation
|
||||
* elm.Window.wm_rotation_supported
|
||||
|
||||
|
||||
Deprecations:
|
||||
|
||||
* elm.FileselectorButton.expandable: Combine with Fileselector class instead
|
||||
* elm.FileselectorButton.folder_only: Combine with Fileselector class instead
|
||||
* elm.FileselectorButton.is_save: Combine with Fileselector class instead
|
||||
* elm.FileselectorButton.path: Combine with Fileselector class instead
|
||||
* elm.FileselectorEntry.callback_activated_add: Combine with Fileselector class instead
|
||||
* elm.FileselectorEntry.expandable: Combine with Fileselector class instead
|
||||
* elm.FileselectorEntry.folder_only: Combine with Fileselector class instead
|
||||
* elm.FileselectorEntry.is_save: Combine with Fileselector class instead
|
||||
* elm.FileselectorEntry.path: Combine with Fileselector class instead
|
||||
* elm.FileselectorEntry.selected: Combine with Fileselector class instead
|
||||
* elm.NaviframeItem.title_visible: Use title_enabled instead.
|
||||
|
||||
|
||||
==================
|
||||
2014-12-08 v1.8.0
|
||||
==================
|
||||
|
||||
Changes:
|
||||
|
||||
* ecore.file.Download => efl.ecore.FileDownload
|
||||
* edje.edit.EdjeEdit => efl.edje_edit.EdjeEdit
|
||||
* Emotion: Keyword argument module_filename was renamed to module_name
|
||||
* elm.Calendar.selected_time: Returns None when the selected date cannot be fetched
|
||||
* elm.Ctxpopup: Now inherits from LayoutClass
|
||||
* elm.Datetime.value:
|
||||
Returns None when the value cannot be fetched
|
||||
raise RuntimeError when setting the value failed
|
||||
* elm.Datetime.value_max:
|
||||
Returns None when the max value cannot be fetched
|
||||
raise RuntimeError when setting the max value failed
|
||||
* elm.Datetime.value_min:
|
||||
Returns None when the min value cannot be fetched
|
||||
raise RuntimeError when setting the min value failed
|
||||
* elm.Entry: Now inherits from LayoutClass
|
||||
* elm.Entry.cursor_geometry_get: Returns None when the cursor geometry cannot be fetched.
|
||||
* elm.Entry.file: Raise RuntimeError when setting the file fails, instead of returning a bool.
|
||||
* elm.FileselectorEntry: Inherits from LayoutClass.
|
||||
* elm.GestureLayer.attach: Raise RuntimeError on failure, instead of returning a bool
|
||||
* elm.Icon.standard: Raises RuntimeWarning when setting the standard name fails, instead of returning a bool.
|
||||
* elm.Image.file: Raises RuntimeError when setting the file fails, instead of returning a bool.
|
||||
* elm.LayoutClass.box_append: Raises RuntimeError if adding the child fails
|
||||
* elm.LayoutClass.box_insert_at: Raises RuntimeError if adding the child fails
|
||||
* elm.LayoutClass.box_insert_before: Raises RuntimeError if adding the child fails
|
||||
* elm.LayoutClass.box_prepend: Raises RuntimeError if adding the child fails
|
||||
* elm.LayoutClass.box_remove_all: Raises RuntimeError if removing the children fails
|
||||
* elm.LayoutClass.content_set: Raises RuntimeError if setting the content fails.
|
||||
* elm.LayoutClass.file: Raises RuntimeError if setting the file fails
|
||||
* elm.LayoutClass.part_cursor_engine_only_set: Raises RuntimeError if setting the value fails
|
||||
* elm.LayoutClass.part_cursor_set: Raises RuntimeError if setting the cursor fails
|
||||
* elm.LayoutClass.part_cursor_style_set: Raises RuntimeError if setting the cursor style fails
|
||||
* elm.LayoutClass.part_cursor_unset: Raises RuntimeError if unsetting the cursor fails
|
||||
* elm.LayoutClass.table_clear: Raises RuntimeError if clearing the table fails
|
||||
* elm.LayoutClass.table_pack: Raises RuntimeError if adding the child fails
|
||||
* elm.LayoutClass.text_set: Raises RuntimeError if setting the text fails
|
||||
* elm.LayoutClass.theme: Raises RuntimeError if setting the theme fails
|
||||
* elm.Panel: Inherits from LayoutClass.
|
||||
* elm.Photo.file: Raises RuntimeError if setting the file fails
|
||||
* elm.Plug.connect: Raises RuntimeError if adding the child fails
|
||||
* elm.Popup: Inherits from LayoutClass.
|
||||
* elm.Thumb.editable: Raises RuntimeError if cannot be set as editable
|
||||
* elm.Toolbar: Inherits from LayoutClass.
|
||||
* elm.Video.file: Raises RuntimeError if setting the file/uri fails
|
||||
* elm.Window.socket_listen: Raises RuntimeError if creating a socket fails
|
||||
* elm.MenuItem.subitems: Calling del on this property clears the subitems
|
||||
|
||||
|
||||
Deprecations:
|
||||
|
||||
* elm.Diskselector.bounce: You should combine with Scrollable class instead
|
||||
* elm.Diskselector.scroller_policy: You should combine with Scrollable class instead
|
||||
* elm.Entry.bounce: You should combine with Scrollable class instead
|
||||
* elm.Entry.markup_to_utf8: Use the module level markup_to_utf8() method instead
|
||||
* elm.Entry.scrollbar_policy: You should combine with Scrollable class instead
|
||||
* elm.Entry.utf8_to_markup: Use the module level utf8_to_markup() method instead
|
||||
* elm.Entry_markup_to_utf8: Use markup_to_utf8() instead
|
||||
* elm.Entry_utf8_to_markup: Use utf8_to_markup() instead
|
||||
* elm.Gengrid.bounce: You should combine with Scrollable class instead
|
||||
* elm.Gengrid.scroller_policy: You should combine with Scrollable class instead
|
||||
* elm.GengridItem.item_tooltip_unset: Use tooltip_unset() instea
|
||||
* elm.Genlist.bounce: You should combine with Scrollable class instead
|
||||
* elm.Genlist.scroller_policy: You should combine with Scrollable class instead
|
||||
* elm.Index.item_find: Broken, don't use
|
||||
* elm.Label.slide: Use slide_mode instead
|
||||
* elm.Label.slide_get: Use slide_mode instead
|
||||
* elm.Label.slide_set: Use slide_mode instead
|
||||
* elm.List.bounce: You should combine with Scrollable class instead
|
||||
* elm.List.scroller_policy: You should combine with Scrollable class instead
|
||||
* elm.Map.bounce: You should combine with Scrollable class instead
|
||||
* elm.Map.scroller_policy: You should combine with Scrollable class instead
|
||||
* elm.NaviframeItem.item_pop_to: Use pop_to() instead
|
||||
* elm.NaviframeItem.item_promote: Use promote() instead
|
||||
* elm.need_e_dbus: Use need_eldbus() for eldbus (v2) support. Old API is deprecated
|
||||
* elm.Notify.orient_get: Use align instead
|
||||
* elm.Notify.orient_set: Use align instead
|
||||
* elm.Object.domain_translatable_text_part_set: Use domain_translatable_part_text_set() instead
|
||||
* elm.Object.translatable_text_part_get: Use translatable_part_text_get() instead
|
||||
* elm.Object.widget_check: Use type(obj) instead
|
||||
* elm.ObjectItem.data_get: Use the data attribute (dict) instead
|
||||
* elm.ObjectItem.data_set: Use the data attribute (dict) instead
|
||||
* elm.Photocam.bounce: You should combine with Scrollable class instead
|
||||
* elm.Photocam.scroller_policy: You should combine with Scrollable class instead
|
||||
* elm.Radio.value_pointer_set: Don't use this, only works in C
|
||||
* elm.Scrollable.custom_widget_base_theme_set: Use theme instead
|
||||
* elm.Toolbar.bounce: You should combine with Scrollable class instead
|
||||
* elm.Toolbar.scroller_policy: You should combine with Scrollable class instead
|
||||
* elm.Web.uri: Use property "url" instead
|
||||
|
||||
|
||||
Additions:
|
||||
|
||||
* efl container package
|
||||
* Loggers
|
||||
* Using keyword arguments to set properties
|
||||
|
||||
* ecore.FileDownload
|
||||
* ecore.FileMonitor
|
||||
* ecore.Poller
|
||||
* ecore.Timer.delay
|
||||
* ecore.Timer.pending
|
||||
* ecore.Timer.reset
|
||||
|
||||
* Edje.mirrored
|
||||
* Edje.preload
|
||||
* Edje.scale
|
||||
* Edje.size_min_restricted_calc
|
||||
* Edje.update_hints
|
||||
|
||||
* evas.Image.source_events
|
||||
* evas.Image.source_visible
|
||||
* evas.Textgrid
|
||||
* evas.TextgridCell
|
||||
|
||||
* Emotion.bg_color
|
||||
* Emotion.border
|
||||
* Emotion.image_get
|
||||
* Emotion.keep_aspect
|
||||
* Emotion.last_position_load
|
||||
* Emotion.last_position_save
|
||||
* Emotion.play_speed
|
||||
* Emotion.priority
|
||||
* Emotion.suspend
|
||||
* Emotion.video_subtitle_file
|
||||
|
||||
* elm.Popup.callback_language_changed_add
|
||||
* elm.Bubble.callback_focused_add
|
||||
* elm.Bubble.callback_unfocused_add
|
||||
* elm.Button.callback_focused_add
|
||||
* elm.Button.callback_unfocused_add
|
||||
* elm.Calendar.callback_focused_add
|
||||
* elm.Calendar.callback_unfocused_add
|
||||
* elm.Calendar.displayed_time
|
||||
* elm.Calendar.selectable
|
||||
* elm.Check.callback_focused_add
|
||||
* elm.Check.callback_unfocused_add
|
||||
* elm.Clock.callback_focused_add
|
||||
* elm.Clock.callback_unfocused_add
|
||||
* elm.Colorselector.callback_focused_add
|
||||
* elm.Colorselector.callback_unfocused_add
|
||||
* elm.Configuration.clouseau_enabled
|
||||
* elm.Configuration.glayer_double_tap_timeout
|
||||
* elm.Configuration.glayer_long_tap_start_timeout
|
||||
* elm.Configuration.indicator_service_get
|
||||
* elm.Configuration.scroll_thumbscroll_acceleration_threshold
|
||||
* elm.Configuration.scroll_thumbscroll_acceleration_time_limit
|
||||
* elm.Configuration.scroll_thumbscroll_acceleration_weight
|
||||
* elm.Configuration.scroll_thumbscroll_border_friction
|
||||
* elm.Configuration.scroll_thumbscroll_flick_distance_tolerance
|
||||
* elm.Configuration.scroll_thumbscroll_hold_threshold
|
||||
* elm.Configuration.scroll_thumbscroll_min_friction
|
||||
* elm.Configuration.selection_unfocused_clear
|
||||
* elm.Configuration.softcursor_mode
|
||||
* elm.Conformant.callback_clipboard_state_off_add
|
||||
* elm.Conformant.callback_clipboard_state_on_add
|
||||
* elm.Conformant.callback_virtualkeypad_state_off_add
|
||||
* elm.Conformant.callback_virtualkeypad_state_on_add
|
||||
* elm.Ctxpopup.callback_focused_add
|
||||
* elm.Ctxpopup.callback_unfocused_add
|
||||
* elm.Datetime.callback_focused_add
|
||||
* elm.Datetime.callback_unfocused_add
|
||||
* elm.Dayselector.weekdays_names
|
||||
* elm.Diskselector.callback_focused_add
|
||||
* elm.Diskselector.callback_unfocused_add
|
||||
* elm.Entry.autocapital_type
|
||||
* elm.Entry.context_menu_item_add
|
||||
* elm.Entry.end_visible
|
||||
* elm.Entry.input_panel_layout_variation
|
||||
* elm.Entry.markup_filter_append
|
||||
* elm.Entry.markup_filter_prepend
|
||||
* elm.Entry.markup_filter_remove
|
||||
* elm.Entry.text_style_user_peek
|
||||
* elm.Entry.text_style_user_pop
|
||||
* elm.Entry.text_style_user_push
|
||||
* elm.EntryContextMenuItem
|
||||
* elm.EntryContextMenuItem.icon
|
||||
* elm.EntryContextMenuItem.label
|
||||
* elm.Fileselector.filters_clear
|
||||
* elm.Fileselector.hidden_visible
|
||||
* elm.Fileselector.mime_types_filter_append
|
||||
* elm.Fileselector.multi_select
|
||||
* elm.Fileselector.selected_paths
|
||||
* elm.Flip.flip_go_to
|
||||
* elm.FlipSelector.callback_focused_add
|
||||
* elm.FlipSelector.callback_unfocused_add
|
||||
* elm.cache_all_flush
|
||||
* elm.font_fontconfig_name_get
|
||||
* elm.font_properties_free
|
||||
* elm.font_properties_get
|
||||
* elm.object_tree_dot_dump
|
||||
* elm.object_tree_dump
|
||||
* elm.Gengrid.at_xy_item_get
|
||||
* elm.Gengrid.callback_focused_add
|
||||
* elm.Gengrid.callback_unfocused_add
|
||||
* elm.Gengrid.nth_item_get
|
||||
* elm.GengridItem.append_to
|
||||
* elm.GengridItem.insert_after
|
||||
* elm.GengridItem.insert_before
|
||||
* elm.GengridItem.prepend_to
|
||||
* elm.GengridItem.sorted_insert
|
||||
* elm.GengridItemClass.free
|
||||
* elm.GengridItemClass.ref
|
||||
* elm.GengridItemClass.unref
|
||||
* elm.Genlist.callback_focused_add
|
||||
* elm.Genlist.callback_unfocused_add
|
||||
* elm.Genlist.focus_on_selection
|
||||
* elm.Genlist.nth_item_get
|
||||
* elm.GenlistItemClass.free
|
||||
* elm.GenlistItemClass.ref
|
||||
* elm.GenlistItemClass.unref
|
||||
* elm.GestureLayer.continues_enable
|
||||
* elm.GestureLayer.double_tap_timeout
|
||||
* elm.GestureLayer.flick_time_limit_ms
|
||||
* elm.GestureLayer.line_angular_tolerance
|
||||
* elm.GestureLayer.line_distance_tolerance
|
||||
* elm.GestureLayer.line_min_length
|
||||
* elm.GestureLayer.long_tap_start_timeout
|
||||
* elm.GestureLayer.rotate_angular_tolerance
|
||||
* elm.GestureLayer.tap_finger_size
|
||||
* elm.GestureLayer.zoom_distance_tolerance
|
||||
* elm.GestureLayer.zoom_finger_factor
|
||||
* elm.GestureLayer.zoom_wheel_factor
|
||||
* elm.Hover.callback_focused_add
|
||||
* elm.Hover.callback_unfocused_add
|
||||
* elm.ImageErrorInfo
|
||||
* elm.ImageProgressInfo
|
||||
* elm.Index.callback_focused_add
|
||||
* elm.Index.callback_unfocused_add
|
||||
* elm.Index.delay_change_time
|
||||
* elm.Index.omit_enabled
|
||||
* elm.Label.slide_go
|
||||
* elm.Label.slide_mode
|
||||
* elm.LayoutClass.edje_object_can_access
|
||||
* elm.LayoutClass.freeze
|
||||
* elm.LayoutClass.thaw
|
||||
* elm.List.at_xy_item_get
|
||||
* elm.List.callback_focused_add
|
||||
* elm.List.callback_unfocused_add
|
||||
* elm.List.focus_on_selection
|
||||
* elm.Map.callback_focused_add
|
||||
* elm.Map.callback_unfocused_add
|
||||
* elm.Mapbuf.auto
|
||||
* elm.Menu.callback_dismissed_add
|
||||
* elm.MultiButtonEntry.editable
|
||||
* elm.Naviframe.callback_focused_add
|
||||
* elm.Naviframe.callback_unfocused_add
|
||||
* elm.need_eldbus
|
||||
* elm.need_elocation
|
||||
* elm.need_sys_notify
|
||||
* elm.need_systray
|
||||
* elm.ELM_NOTIFY_ALIGN_FILL
|
||||
* elm.Notify.align
|
||||
* elm.Object.domain_part_text_translatable_set
|
||||
* elm.Object.domain_translatable_part_text_set
|
||||
* elm.Object.focus_next_object_get
|
||||
* elm.Object.focus_next_object_set
|
||||
* elm.Object.focused_object
|
||||
* elm.Object.orientation_mode_disabled
|
||||
* elm.Object.scroll_freeze
|
||||
* elm.Object.scroll_hold
|
||||
* elm.Object.translatable_part_text_get
|
||||
* elm.SelectionData.action
|
||||
* elm.ObjectItem.domain_part_text_translatable_set
|
||||
* elm.ObjectItem.domain_translatable_part_text_set
|
||||
* elm.ObjectItem.translatable_part_text_get
|
||||
* elm.Panel.callback_focused_add
|
||||
* elm.Panel.callback_unfocused_add
|
||||
* elm.Photocam.callback_focused_add
|
||||
* elm.Photocam.callback_unfocused_add
|
||||
* elm.PhotocamErrorInfo
|
||||
* elm.PhotocamProgressInfo
|
||||
* elm.Popup.callback_focused_add
|
||||
* elm.Popup.callback_unfocused_add
|
||||
* elm.Progressbar.callback_focused_add
|
||||
* elm.Progressbar.callback_unfocused_add
|
||||
* elm.Progressbar.part_value_get
|
||||
* elm.Progressbar.part_value_set
|
||||
* elm.Radio.callback_focused_add
|
||||
* elm.Radio.callback_unfocused_add
|
||||
* elm.Scrollable.callback_focused_add
|
||||
* elm.Scrollable.callback_unfocused_add
|
||||
* elm.Scrollable.movement_block
|
||||
* elm.Scrollable.page_scroll_limit
|
||||
* elm.Scrollable.page_size Getter for this property
|
||||
* elm.Scrollable.page_snap
|
||||
* elm.Scrollable.single_direction
|
||||
* elm.Slider.callback_focused_add
|
||||
* elm.Slider.callback_unfocused_add
|
||||
* elm.Slider.step
|
||||
* elm.Slideshow.callback_focused_add
|
||||
* elm.Slideshow.callback_unfocused_add
|
||||
* elm.Spinner.callback_focused_add
|
||||
* elm.Spinner.callback_unfocused_add
|
||||
* elm.Spinner.special_value_del
|
||||
* elm.Spinner.special_value_get
|
||||
* elm.Table.child_get
|
||||
* elm.Thumb.aspect
|
||||
* elm.Thumb.compress
|
||||
* elm.Thumb.crop_align
|
||||
* elm.Thumb.fdo_size
|
||||
* elm.Thumb.format
|
||||
* elm.Thumb.orientation
|
||||
* elm.Thumb.quality
|
||||
* elm.Thumb.size
|
||||
* elm.Toolbar.callback_focused_add
|
||||
* elm.Toolbar.callback_unfocused_add
|
||||
* elm.Toolbar.reorder_mode
|
||||
* elm.Toolbar.transverse_expanded
|
||||
* elm.ToolbarItem.bring_in
|
||||
* elm.ToolbarItem.show
|
||||
* elm.Transit.smooth
|
||||
* elm.Transit.tween_mode_factor
|
||||
* elm.Player.callback_focused_add
|
||||
* elm.Player.callback_unfocused_add
|
||||
* elm.Video.callback_focused_add
|
||||
* elm.Video.callback_unfocused_add
|
||||
* elm.Web.callback_focused_add
|
||||
* elm.Web.callback_unfocused_add
|
||||
* elm.Web.url
|
||||
* elm.Window.available_profiles
|
||||
* elm.Window.callback_focused_add
|
||||
* elm.Window.callback_unfocused_add
|
||||
* elm.Window.floating_mode
|
||||
* elm.Window.focus_highlight_animate
|
||||
* elm.Window.main_menu
|
||||
* elm.Window.norender
|
||||
* elm.Window.norender_pop
|
||||
* elm.Window.norender_push
|
||||
* elm.Window.profile
|
||||
* elm.Window.render
|
||||
* elm.Window.screen_dpi
|
105
INSTALL
105
INSTALL
|
@ -1,67 +1,75 @@
|
|||
|
||||
1. REQUIREMENTS:
|
||||
----------------
|
||||
1. REQUIREMENTS
|
||||
===============
|
||||
|
||||
* Python 2.6 or higher (http://www.python.org/)
|
||||
- Tested with Python 2.6 / 2.7 / 3.2 / 3.3
|
||||
* Python 2.6 or higher, 3.2 or higher (http://www.python.org/)
|
||||
- Tested with Python 3.8
|
||||
|
||||
* Cython 0.19 or higher (http://cython.org/)
|
||||
- Tested with Cython 0.19.1
|
||||
* Cython 0.21 or higher (http://cython.org/)
|
||||
- Tested with Cython 0.29.16
|
||||
|
||||
* EFL core library
|
||||
- eo, evas, ecore, edje, emotion and elementary
|
||||
|
||||
* pkg-config (http://www.freedesktop.org/wiki/Software/pkg-config)
|
||||
- Windows executable (and GLib dependency) can be downloaded from
|
||||
http://www.gtk.org/download/win32.php
|
||||
* EFL must be the same minor version of the bindings,
|
||||
es. python-efl 1.24 need efl 1.24
|
||||
|
||||
* To build the DOCS you will also need:
|
||||
- python-sphinx
|
||||
- [optional] graphviz
|
||||
- [optional] youtube module from the sphinx contrib repository.
|
||||
|
||||
* At least 4GB of free RAM to build
|
||||
|
||||
|
||||
|
||||
2. BUILDING PYTHON-EFL:
|
||||
-----------------------
|
||||
2. BUILDING PYTHON-EFL
|
||||
======================
|
||||
|
||||
Once EFL is built and installed in your desired destination, proceed with
|
||||
building the wrapper. The setup script can be forced to use purely C
|
||||
sources by setting the environment variable DISABLE_CYTHON to 1.
|
||||
|
||||
|
||||
* BUILDING WITH GCC/G++ (Linux, OS X, etc.)
|
||||
building the wrapper using:
|
||||
|
||||
python setup.py build
|
||||
|
||||
* BUILDING WITH Visual Studio (Windows)
|
||||
IMPORTANT NOTE:
|
||||
To build the bindings you will need at least 4GB of free ram!
|
||||
Otherwise the build process will badly fail.
|
||||
|
||||
python setup.py build
|
||||
|
||||
* BUILDING WITH MINGW (Windows)
|
||||
Distribution tarballs include pre-generated C source files, so
|
||||
cython usage is disabled by default, while is enabled in development git
|
||||
versions. You can always force the usage of cython using two environment
|
||||
variables: DISABLE_CYTHON or ENABLE_CYTHON
|
||||
|
||||
python setup.py build -c mingw32
|
||||
|
||||
* FORCING C SOURCES FOR BUILD
|
||||
* FORCE C SOURCES FOR BUILD
|
||||
|
||||
env DISABLE_CYTHON=1 python setup.py build
|
||||
|
||||
|
||||
* FORCE THE USAGE OF CYTHON
|
||||
|
||||
3. CLEANUP:
|
||||
-----------
|
||||
* For cleaning up
|
||||
env ENABLE_CYTHON=1 python setup.py build
|
||||
|
||||
|
||||
|
||||
3. CLEANUP
|
||||
==========
|
||||
|
||||
* For cleaning up:
|
||||
|
||||
python setup.py clean --all
|
||||
|
||||
* To also remove all the C/HTML files generated by Cython:
|
||||
|
||||
python setup.py clean_generated_files
|
||||
|
||||
WARNING: you will need cython to regenerate the C files, do not use this
|
||||
in distribution tarballs, unless you know what are you doing.
|
||||
|
||||
|
||||
4. INSTALLATION:
|
||||
----------------
|
||||
|
||||
4. INSTALLATION
|
||||
===============
|
||||
|
||||
* For system-wide installation (needs administrator privileges):
|
||||
|
||||
python setup.py install
|
||||
(sudo) python setup.py install
|
||||
|
||||
* For user installation:
|
||||
|
||||
|
@ -69,16 +77,19 @@
|
|||
|
||||
* To install for python3:
|
||||
|
||||
python3 setup.py install (also cython need to be installed with py3)
|
||||
(sudo) python3 setup.py install (also cython need to be installed with py3)
|
||||
|
||||
* Install with a custom prefix:
|
||||
|
||||
python setup.py install --prefix=/MY_PREFIX
|
||||
(sudo) python setup.py install --prefix=/MY_PREFIX
|
||||
|
||||
* You can also uninstall using:
|
||||
|
||||
(sudo) python setup.py uninstall
|
||||
|
||||
|
||||
|
||||
5. DOCUMENTATION:
|
||||
-----------------
|
||||
5. DOCUMENTATION
|
||||
================
|
||||
|
||||
To build the docs for the bindings you need to have Sphinx installed, for
|
||||
(optional) graphs you need Graphviz, for (optional) Youtube demonstration
|
||||
|
@ -86,7 +97,8 @@
|
|||
packages: python-sphinx, graphviz, python-pygraphviz, libgv-python
|
||||
|
||||
To build the docs just run:
|
||||
python setup.py build_doc
|
||||
|
||||
python setup.py build_doc
|
||||
|
||||
You will find the generated html docs under the folder:
|
||||
build/sphinx/html
|
||||
|
@ -95,26 +107,15 @@
|
|||
up with empty documentation.
|
||||
|
||||
|
||||
6. TESTS and EXAMPLES:
|
||||
----------------------
|
||||
6. TESTS and EXAMPLES
|
||||
=====================
|
||||
|
||||
The tests/ folder contains all the unit tests available, you can run individual
|
||||
tests or use the 00_run_all_tests.py in each folder or even in the tests/ base
|
||||
dir to run all the tests at once.
|
||||
|
||||
Python 2.7 is required for running the tests.
|
||||
Python 2.7 / 3.2 or greater is required for running the tests.
|
||||
|
||||
The scripts in examples/ folder must be run by the user as they require
|
||||
user interaction.
|
||||
|
||||
|
||||
|
||||
7. UNINSTALL:
|
||||
-------------
|
||||
|
||||
Unfortunately setup.py does not provide a way to remove the installed packages,
|
||||
|
||||
To completely remove the installed stuff just remove the 'efl' folder in
|
||||
your python installation, usually /usr/(local/)lib/pythonX.X/dist-packages/efl
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
include README.rst INSTALL COPYING COPYING.LESSER AUTHORS changes.html
|
||||
include README INSTALL COPYING COPYING.LESSER AUTHORS ChangeLog
|
||||
recursive-include efl *.c *.h *.pyx *.pxi *.pxd
|
||||
graft include
|
||||
graft tests
|
||||
|
|
35
Makefile
35
Makefile
|
@ -5,6 +5,10 @@
|
|||
# want to type less or do not want to learn the python
|
||||
# setup syntax.
|
||||
#
|
||||
# NOTE: This file is also used to discriminate when we are building from
|
||||
# stable tarballs (in this case we disable cython by default) or from git
|
||||
# sources as the Makefile is not distributed.
|
||||
#
|
||||
# Usage:
|
||||
#
|
||||
# make <cmd> to build using the default python interpreter
|
||||
|
@ -12,7 +16,7 @@
|
|||
#
|
||||
|
||||
|
||||
PY = python
|
||||
PY = python3
|
||||
|
||||
|
||||
.PHONY: build
|
||||
|
@ -25,14 +29,19 @@ install:
|
|||
$(PY) setup.py install
|
||||
|
||||
|
||||
.PHONY: uninstall
|
||||
uninstall:
|
||||
$(PY) setup.py uninstall
|
||||
|
||||
|
||||
.PHONY: doc
|
||||
doc:
|
||||
$(PY) setup.py build build_doc
|
||||
|
||||
|
||||
.PHONY: tests
|
||||
tests:
|
||||
$(PY) tests/00_run_all_tests.py
|
||||
.PHONY: test
|
||||
test:
|
||||
$(PY) setup.py test
|
||||
|
||||
|
||||
.PHONY: clean
|
||||
|
@ -40,12 +49,20 @@ clean:
|
|||
$(PY) setup.py clean --all
|
||||
|
||||
|
||||
.PHONY: maintaner-clean
|
||||
maintaner-clean:
|
||||
.PHONY: maintainer-clean
|
||||
maintainer-clean:
|
||||
$(PY) setup.py clean --all clean_generated_files
|
||||
rm -rf build/
|
||||
rm -rf dist/
|
||||
rm -rf python_efl.egg-info/
|
||||
rm -f installed_files-*.txt
|
||||
|
||||
|
||||
.PHONY: dist
|
||||
dist:
|
||||
$(PY) setup.py sdist --formats=gztar,bztar
|
||||
|
||||
|
||||
$(PY) setup.py sdist --formats=gztar,xztar
|
||||
$(PY) setup.py bdist_wheel
|
||||
@cd dist/; for f in `ls *.tar.*` ; do \
|
||||
echo Generating sha256 for: $$f ; \
|
||||
sha256sum $$f > $$f.sha256; \
|
||||
done
|
||||
|
|
|
@ -0,0 +1,92 @@
|
|||
# Python bindings for the EFL
|
||||
|
||||
EFL, or the *Enlightenment Foundation Libraries*, is a collection of libraries for handling many common tasks such as data structures, communication, rendering, widgets and more. Read more on the [efl web site](https://www.enlightenment.org/about-efl).
|
||||
|
||||
Python-EFL are the python bindings for the whole EFL stack (evas, ecore, edje, emotion, ethumb and elementary). You can use Python-EFL to build a portable GUI application in minutes.
|
||||
|
||||
The documentation for Python-EFL is available [here](https://docs.enlightenment.org/python-efl/current/).
|
||||
|
||||
## Install from pypi
|
||||
|
||||
The last stable release is always available on pypi, and pip is the raccomanded way to install Python-EFL:
|
||||
```
|
||||
pip install python-efl
|
||||
```
|
||||
The only requirement is to have the EFL already installed on your machine, see [here](https://www.enlightenment.org/docs/distros/start) for install instructions for various linux distro or for building EFL from sources.
|
||||
|
||||
NOTE: Currently only sources packages are available on pip, this means that the installation will be quite long as it need to compile all the modules, and that you need a C compiler for installation to work (we highly suggest to use clang as your C compiler). For the next release we have plans to also upload binary packages on pypi, so the installation will be blazing fast and will have zero dependencies!
|
||||
|
||||
|
||||
## Install from released tarballs
|
||||
|
||||
All the stable releases of python-efl can always be found at:
|
||||
https://download.enlightenment.org/rel/bindings/python/
|
||||
|
||||
To install download and unpack a tarball and run:
|
||||
```
|
||||
python setup.py build
|
||||
python setup.py install --user
|
||||
or
|
||||
sudo python setup.py install (for sistem-wide installation)
|
||||
```
|
||||
|
||||
NOTE: due to strange cython+gcc behaviour we highly suggest to build python-efl using clang. If you experience issues using gcc (like memory exhausted or strange compile errors) just use clang in this way:
|
||||
|
||||
```
|
||||
CC=clang python setup.py build
|
||||
```
|
||||
|
||||
## Source repository
|
||||
|
||||
If you would like to contribute to Python-EFL and make changes to the Python-EFL code you need to build from **git**. Development take place in the **master** branch, while we backport bugfixes in the release branches. You will find a branch for each released version, branches are named as **python-efl-X.X**.
|
||||
|
||||
To build from git you also need to have [Cython](https://cython.org/) installed.
|
||||
|
||||
### Main repository
|
||||
https://git.enlightenment.org/bindings/python/python-efl.git/
|
||||
|
||||
### GitHub repository
|
||||
https://github.com/DaveMDS/python-efl
|
||||
|
||||
The GitHub repo has been created to simplify the workflow for people that do
|
||||
not have a git account in the E repo, and thus improving collaboration.
|
||||
Feel free to make pull requests on GitHub.
|
||||
|
||||
|
||||
## Documentation
|
||||
|
||||
Documentation for the last stable release can be found [here](https://docs.enlightenment.org/python-efl/current/).
|
||||
Additionally you can generate the documentation yourself from the source code using the following command:
|
||||
```
|
||||
python setup.py build build_doc
|
||||
```
|
||||
The HTML generated documentation will be available in the folder: `build/sphinx/html/`
|
||||
|
||||
## Some of the projects using Python-EFL (in random order)
|
||||
|
||||
| **Project** | **Website** |
|
||||
|-------------------------------------|------------------------------------------------------|
|
||||
| **EpyMC** - Media Center | https://github.com/DaveMDS/epymc |
|
||||
| **Espionage** - D-Bus inspector | https://phab.enlightenment.org/w/projects/espionage/ |
|
||||
| **Epour** - BitTorrent Client | https://phab.enlightenment.org/w/projects/epour/ |
|
||||
| **Eluminance** - Fast photo browser | https://github.com/DaveMDS/eluminance |
|
||||
| **Egitu** - Git User Interface | https://github.com/DaveMDS/egitu |
|
||||
| **Edone** - GettingThingsDone | https://github.com/DaveMDS/edone |
|
||||
| **Epack** - Archive extractor | https://github.com/wfx/epack |
|
||||
|
||||
... and many more that cannot fit in this short list. If have some code and want it in this list just let us know.
|
||||
|
||||
|
||||
## A short history of Python-EFL
|
||||
|
||||
Python-EFL was begun in 2007 by work of Gustavo Sverzut Barbieri and others while working for Nokia on the software project Canola Media Player. The language bindings were initially developed for the individual components of EFL, until merged together in 2013.
|
||||
|
||||
He was later joined by Ulisses Furquim Freire da Silva, who together formed the company ProFUSION embedded systems where the developement continued and a new software project called Editje was created, which uses the Python bindings for most of its functionality.
|
||||
|
||||
Python-EFL gained many more developers, also at this time an independent application project called EpyMC was created by Davide Andreoli.
|
||||
|
||||
In the beginning of the year 2011 the developement was practically halted. In 2012 Davide Andreoli picked up the developement and Kai Huuhko (@kuuko) joined him shortly after. Work at this time was focused on finishing the Python bindings for Elementary, the toolkit library.
|
||||
|
||||
In 2013 the individual components were merged together and a new documentation system was implemented, enabling easier access for the end-user developers.
|
||||
|
||||
Currently (as in 2022) the bindings are still actively maintained and improved by Davide Andreoli, in his effort to bring to python a powerfull and attractive UI toolkit.
|
79
README.rst
79
README.rst
|
@ -1,79 +0,0 @@
|
|||
#################
|
||||
PYTHON-EFL 1.11.0
|
||||
#################
|
||||
|
||||
EFL is a collection of libraries for handling many common tasks a
|
||||
developer man have such as data structures, communication, rendering,
|
||||
widgets and more. PYTHON-EFL are the python bindings for EFL and Elementary.
|
||||
|
||||
*******
|
||||
INSTALL
|
||||
*******
|
||||
|
||||
For installation instruction see the INSTALL file.
|
||||
|
||||
*******
|
||||
CHANGES
|
||||
*******
|
||||
|
||||
VERSIONS AFTER 1.8
|
||||
==================
|
||||
|
||||
See changes.html
|
||||
|
||||
|
||||
FROM 1.7 to 1.8
|
||||
===============
|
||||
|
||||
* added efl container package
|
||||
* ecore.file.Download => efl.ecore.FileDownload
|
||||
* edje.edit.EdjeEdit => efl.edje_edit.EdjeEdit
|
||||
* Emotion(module_filename="xxx") => Emotion(module_name="xxx")
|
||||
* elm.ObjectItem.data changed to a dict (previously held args & kwargs)
|
||||
|
||||
* Many _set functions that would previously return status now instead raise
|
||||
an exception when the underlying C function returns failure:
|
||||
|
||||
- efl.elementary.entry.Entry.file_set
|
||||
- efl.elementary.fileselector.Fileselector.selected_set
|
||||
- efl.elementary.genlist.GenlistItem.tooltip_window_mode_set
|
||||
- efl.elementary.image.Image.file_set
|
||||
- efl.elementary.layout_class.LayoutClass.file_set
|
||||
- efl.elementary.layout_class.LayoutClass.theme_set
|
||||
- efl.elementary.layout_class.LayoutClass.box_append
|
||||
- efl.elementary.layout_class.LayoutClass.box_prepend
|
||||
- efl.elementary.layout_class.LayoutClass.box_insert_before
|
||||
- efl.elementary.layout_class.LayoutClass.box_insert_at
|
||||
- efl.elementary.layout_class.LayoutClass.box_remove_all
|
||||
- efl.elementary.layout_class.LayoutClass.table_pack
|
||||
- efl.elementary.layout_class.LayoutClass.table_clear
|
||||
- efl.elementary.layout_class.LayoutClass.part_cursor_set
|
||||
- efl.elementary.layout_class.LayoutClass.part_cursor_unset
|
||||
- efl.elementary.layout_class.LayoutClass.part_cursor_style_set
|
||||
- efl.elementary.layout_class.LayoutClass.part_cursor_engine_only_set
|
||||
- efl.elementary.photo.Photo.file_set
|
||||
- efl.elementary.photocam.Photocam.file_set
|
||||
- efl.elementary.video.Video.file_set
|
||||
|
||||
This also applies when assigning the relevant properties.
|
||||
|
||||
|
||||
* This list of stuff will not be ported to the 1.8 tree. Because they are old,
|
||||
not portable, or just because no one used and seem not usefull:
|
||||
|
||||
- EcoreEvas
|
||||
- EcoreImf
|
||||
- EcoreX
|
||||
- EcoreWin32
|
||||
- python-evas/evas/utils.py
|
||||
- python-evas/evas/decorators.py
|
||||
- python-evas/evas/debug.py
|
||||
- python-evas old hack to rotate objects
|
||||
|
||||
Deprecated in 1.8
|
||||
-----------------
|
||||
|
||||
* elm.Scroller.custom_widget_base_theme_set => elm.Layout.theme_set
|
||||
* elm.notify.orient_set/get/prop removed => align
|
||||
* elementary.need_e_dbus => elementary.need_edbus
|
||||
* elm.domain_translatable_text_part_set => elm.domain_translatable_part_text_set
|
46
TODO
46
TODO
|
@ -1,46 +0,0 @@
|
|||
|
||||
BUGS
|
||||
====
|
||||
* EdjeEdit: PartState API does not work
|
||||
* Elm.Map: overlays_show segfaults, scrollers in examples are jumpy
|
||||
* Elementary: when we use custom function callbacks we usually leak some
|
||||
reference around, some examples:
|
||||
- Fileselector.custom_filter_append()
|
||||
- Multibuttonentry.format_function_set()
|
||||
- Multibuttonentry.filter_append()
|
||||
- Multibuttonentry.filterprepend()
|
||||
* Evas: SmartObject callbacks broken when object is deleted
|
||||
|
||||
Failing unit tests
|
||||
------------------
|
||||
* tests.edje.test_04_edit: testPartEffect (marked as known failure)
|
||||
* tests.edje.test_04_edit: testGroupDel (skipped, segfault)
|
||||
* tests.edje.test_04_edit: testExternal (skipped, TODO)
|
||||
|
||||
TODO
|
||||
====
|
||||
* update links and text on:
|
||||
http://www.freedesktop.org/wiki/Software/DBusBindings
|
||||
(requires fd.org shell account?)
|
||||
* Review the internal functions and name them consistently
|
||||
* Evas: SmartObject needs testing, work. Make it inheritable by extension
|
||||
classes?
|
||||
* Improve ethumb
|
||||
* edje: complete the unit tests
|
||||
* Initial Evas GL support (for Elm)
|
||||
* Add more documentation for callbacks, events, etc.
|
||||
* Check for missing Eo type mappings
|
||||
|
||||
Elm
|
||||
---
|
||||
* Drag-n-Drop
|
||||
* Automate compilation of the example edje files.
|
||||
* Add more examples
|
||||
* Prefs
|
||||
* GLView
|
||||
* Unit tests
|
||||
* Images missing in the documentation:
|
||||
- datetime
|
||||
- video
|
||||
- web
|
||||
- window ?
|
|
@ -24,6 +24,12 @@ c_exclude_list = [
|
|||
"elm_access", # Access disabled until 1.9
|
||||
"elm_config_access", # Access disabled until 1.9
|
||||
"elm_object_item_access", # Access disabled until 1.9
|
||||
"elm_systray", # We currently have this in using Eo API
|
||||
"elm_code_", # The code widget is still in beta
|
||||
"elm_need_e_dbus", # has been deprecated long time ago
|
||||
"elm_check_selected_get", # We already provide state_get
|
||||
"elm_check_selected_set", # We already provide state_set
|
||||
|
||||
]
|
||||
c_excludes = "|".join(c_exclude_list)
|
||||
|
||||
|
@ -55,8 +61,6 @@ params = {
|
|||
"elementary": ("efl/elementary", "Elementary", "elm"),
|
||||
}
|
||||
|
||||
EFL_MIN_VERSION = "1.9.99"
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Reports EFL vs. Python-EFL API functions coverage"
|
||||
)
|
||||
|
@ -165,7 +169,9 @@ def get_pyapis(pxd_path, header_name, prefix):
|
|||
|
||||
for path, dirs, files in os.walk(pxd_path):
|
||||
for f in files:
|
||||
if not f.endswith(".pxd"):
|
||||
# if not f.endswith(".pxd"):
|
||||
# continue
|
||||
if f.endswith(".pyc"):
|
||||
continue
|
||||
open_args = (os.path.join(path, f),)
|
||||
open_kwargs = dict(mode="r")
|
||||
|
@ -205,7 +211,7 @@ print("")
|
|||
|
||||
for lib in args.libs:
|
||||
|
||||
inc_paths = pkg_config(lib, EFL_MIN_VERSION)
|
||||
inc_paths = pkg_config(lib)
|
||||
inc_path = None
|
||||
for p in inc_paths:
|
||||
if lib in p:
|
||||
|
|
1510
changes.html
1510
changes.html
File diff suppressed because it is too large
Load Diff
153
doc/Makefile
153
doc/Makefile
|
@ -1,153 +0,0 @@
|
|||
# Makefile for Sphinx documentation
|
||||
#
|
||||
|
||||
# You can set these variables from the command line.
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = sphinx-build
|
||||
PAPER =
|
||||
BUILDDIR = _build
|
||||
|
||||
# Internal variables.
|
||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
||||
PAPEROPT_letter = -D latex_paper_size=letter
|
||||
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||
# the i18n builder cannot share the environment and doctrees with the others
|
||||
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
||||
|
||||
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
|
||||
|
||||
help:
|
||||
@echo "Please use \`make <target>' where <target> is one of"
|
||||
@echo " html to make standalone HTML files"
|
||||
@echo " dirhtml to make HTML files named index.html in directories"
|
||||
@echo " singlehtml to make a single large HTML file"
|
||||
@echo " pickle to make pickle files"
|
||||
@echo " json to make JSON files"
|
||||
@echo " htmlhelp to make HTML files and a HTML help project"
|
||||
@echo " qthelp to make HTML files and a qthelp project"
|
||||
@echo " devhelp to make HTML files and a Devhelp project"
|
||||
@echo " epub to make an epub"
|
||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
||||
@echo " latexpdf to make LaTeX files and run them through pdflatex"
|
||||
@echo " text to make text files"
|
||||
@echo " man to make manual pages"
|
||||
@echo " texinfo to make Texinfo files"
|
||||
@echo " info to make Texinfo files and run them through makeinfo"
|
||||
@echo " gettext to make PO message catalogs"
|
||||
@echo " changes to make an overview of all changed/added/deprecated items"
|
||||
@echo " linkcheck to check all external links for integrity"
|
||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
||||
|
||||
clean:
|
||||
-rm -rf $(BUILDDIR)/*
|
||||
|
||||
html:
|
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
|
||||
|
||||
dirhtml:
|
||||
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
|
||||
|
||||
singlehtml:
|
||||
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
|
||||
@echo
|
||||
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
|
||||
|
||||
pickle:
|
||||
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
|
||||
@echo
|
||||
@echo "Build finished; now you can process the pickle files."
|
||||
|
||||
json:
|
||||
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
|
||||
@echo
|
||||
@echo "Build finished; now you can process the JSON files."
|
||||
|
||||
htmlhelp:
|
||||
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
||||
".hhp project file in $(BUILDDIR)/htmlhelp."
|
||||
|
||||
qthelp:
|
||||
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
|
||||
@echo
|
||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
||||
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
|
||||
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/PythonBindingsforEnlightenmentFoundationLibraries.qhcp"
|
||||
@echo "To view the help file:"
|
||||
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PythonBindingsforEnlightenmentFoundationLibraries.qhc"
|
||||
|
||||
devhelp:
|
||||
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
|
||||
@echo
|
||||
@echo "Build finished."
|
||||
@echo "To view the help file:"
|
||||
@echo "# mkdir -p $$HOME/.local/share/devhelp/PythonBindingsforEnlightenmentFoundationLibraries"
|
||||
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PythonBindingsforEnlightenmentFoundationLibraries"
|
||||
@echo "# devhelp"
|
||||
|
||||
epub:
|
||||
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
|
||||
@echo
|
||||
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
|
||||
|
||||
latex:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo
|
||||
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
|
||||
@echo "Run \`make' in that directory to run these through (pdf)latex" \
|
||||
"(use \`make latexpdf' here to do that automatically)."
|
||||
|
||||
latexpdf:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
|
||||
@echo "Running LaTeX files through pdflatex..."
|
||||
$(MAKE) -C $(BUILDDIR)/latex all-pdf
|
||||
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
|
||||
|
||||
text:
|
||||
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
|
||||
@echo
|
||||
@echo "Build finished. The text files are in $(BUILDDIR)/text."
|
||||
|
||||
man:
|
||||
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
|
||||
@echo
|
||||
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
|
||||
|
||||
texinfo:
|
||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||
@echo
|
||||
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
|
||||
@echo "Run \`make' in that directory to run these through makeinfo" \
|
||||
"(use \`make info' here to do that automatically)."
|
||||
|
||||
info:
|
||||
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
|
||||
@echo "Running Texinfo files through makeinfo..."
|
||||
make -C $(BUILDDIR)/texinfo info
|
||||
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
|
||||
|
||||
gettext:
|
||||
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
|
||||
@echo
|
||||
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
|
||||
|
||||
changes:
|
||||
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
|
||||
@echo
|
||||
@echo "The overview file is in $(BUILDDIR)/changes."
|
||||
|
||||
linkcheck:
|
||||
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
|
||||
@echo
|
||||
@echo "Link check complete; look for any errors in the above output " \
|
||||
"or in $(BUILDDIR)/linkcheck/output.txt."
|
||||
|
||||
doctest:
|
||||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
|
||||
@echo "Testing of doctests in the sources finished, look at the " \
|
||||
"results in $(BUILDDIR)/doctest/output.txt."
|
337
doc/conf.py
337
doc/conf.py
|
@ -1,40 +1,47 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Python Bindings for EFL Elementary documentation build configuration file, created by
|
||||
# sphinx-quickstart on Thu Jun 28 09:21:25 2012.
|
||||
# Configuration file for the Sphinx documentation builder.
|
||||
#
|
||||
# This file is execfile()d with the current directory set to its containing dir.
|
||||
#
|
||||
# Note that not all possible configuration values are present in this
|
||||
# autogenerated file.
|
||||
#
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
# This file only contains a selection of the most common options. For a full
|
||||
# list see the documentation:
|
||||
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
||||
|
||||
import sys, os, platform
|
||||
# pylint: disable=invalid-name
|
||||
|
||||
import os
|
||||
import sys
|
||||
import platform
|
||||
|
||||
|
||||
# -- Path setup --------------------------------------------------------------
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
|
||||
d = "lib.%s-%s-%d.%d" % (
|
||||
platform.system().lower(),
|
||||
platform.machine(),
|
||||
sys.version_info[0],
|
||||
sys.version_info[1]
|
||||
)
|
||||
sys.path.insert(0, os.path.abspath("../build/"+d))
|
||||
#sys.path.insert(0, os.path.abspath('../build/lib.linux-i686-3.2'))
|
||||
# add these directories to sys.path here.
|
||||
d = 'lib.%s-%s-%d.%d' % (
|
||||
platform.system().lower(),
|
||||
platform.machine(),
|
||||
sys.version_info[0],
|
||||
sys.version_info[1]
|
||||
)
|
||||
sys.path.insert(0, os.path.abspath('../build/' + d))
|
||||
# sys.path.insert(0, os.path.abspath('../build/lib.linux-i686-3.2'))
|
||||
|
||||
# Delete any previously imported efl package
|
||||
if "efl" in sys.modules:
|
||||
del sys.modules["efl"]
|
||||
if 'efl' in sys.modules:
|
||||
del sys.modules['efl']
|
||||
|
||||
|
||||
# -- General configuration -----------------------------------------------------
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
project = 'Python EFL'
|
||||
author = 'The Python-EFL community (see AUTHORS)'
|
||||
copyright = '2008-2022, ' + author # pylint: disable=redefined-builtin
|
||||
|
||||
|
||||
# -- General configuration ----------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
needs_sphinx = '1.1'
|
||||
needs_sphinx = '3.1'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be extensions
|
||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||
|
@ -43,134 +50,39 @@ extensions = [
|
|||
'sphinx.ext.coverage',
|
||||
]
|
||||
|
||||
try:
|
||||
import gv
|
||||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
extensions.append('sphinx.ext.inheritance_diagram')
|
||||
graphviz_output_format = "svg" # png (default) or svg
|
||||
graphviz_dot_args = ["-Gbgcolor=transparent", "-Ncolor=#4399FF",
|
||||
"-Nfontcolor=white", "-Ecolor=blue"]
|
||||
|
||||
try:
|
||||
import sphinxcontrib.youtube
|
||||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
extensions.append('sphinxcontrib.youtube')
|
||||
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The suffix of source filenames.
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
#source_encoding = 'utf-8-sig'
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'Python EFL'
|
||||
copyright = u'2008-2014, Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
# The short X.Y version.
|
||||
# version = 'X.Y'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
# release = 'X.Y.Z'
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#language = None
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
#today = ''
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
# master_doc = 'index'
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
exclude_patterns = ['_build']
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all documents.
|
||||
#default_role = None
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||
#add_function_parentheses = True
|
||||
|
||||
# If true, the current module name will be prepended to all description
|
||||
# unit titles (such as .. function::).
|
||||
#add_module_names = True
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
#show_authors = False
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
|
||||
# A list of ignored prefixes for module index sorting.
|
||||
#modindex_common_prefix = []
|
||||
|
||||
# Setting this True will show missing references as warnings.
|
||||
#nitpicky = True
|
||||
|
||||
# nitpick_ignore = [
|
||||
# ('py:obj', 'int'),
|
||||
# ('py:obj', 'float'),
|
||||
# ('py:obj', 'double'),
|
||||
# ('py:obj', 'callable'),
|
||||
# ('py:obj', 'function'),
|
||||
# ('py:obj', 'str'),
|
||||
# ('py:exc', 'RuntimeError'),
|
||||
# ('py:exc', 'RuntimeWarning'),
|
||||
# ('py:exc', 'ValueError'),
|
||||
# ('py:exc', 'TypeError'),
|
||||
# ('py:obj', 'Evas_Coord (int)'),
|
||||
# ('py:obj', 'string'),
|
||||
# ('py:obj', 'list'),
|
||||
# ('py:class', 'object'),
|
||||
# ('py:obj', 'unicode'),
|
||||
# ('py:obj', 'bool'),
|
||||
# ('py:obj', 'tuple of ints'),
|
||||
# ('py:class', 'efl.eo.Eo'),
|
||||
# ('py:attr', 'efl.eo.Eo.data'),
|
||||
# ('py:obj', 'datetime.date'),
|
||||
# ]
|
||||
|
||||
|
||||
# -- Autodoc configuration -----------------------------------------------------
|
||||
|
||||
autodoc_default_flags = [
|
||||
'members',
|
||||
'show-inheritance',
|
||||
# 'inherited-members',
|
||||
# 'undoc-members',
|
||||
]
|
||||
autoclass_content = "both"
|
||||
autodoc_docstring_signature = True
|
||||
# autodoc_member_order = "bysource"
|
||||
autodoc_default_options = {
|
||||
'members': True, # show methods for classes
|
||||
'show-inheritance': True, # show bases class
|
||||
'member-order': 'alphabetical', # bysource, alphabetical, groupwise
|
||||
'no-undoc-members': True, # dont show members without docstring
|
||||
'no-inherited-members': True, # dont show members from parent classes
|
||||
}
|
||||
# both the class’ and the __init__ method’s docstring are concatenated
|
||||
autoclass_content = 'both'
|
||||
|
||||
def setup(app):
|
||||
from sphinx.ext.autodoc import cut_lines
|
||||
app.connect('autodoc-process-signature', autodoc_process_signature)
|
||||
app.connect('autodoc-process-docstring', cut_lines(2, what=['class']))
|
||||
|
||||
def autodoc_process_signature(app, what, name, obj, options, signature, return_annotation):
|
||||
def autodoc_process_signature(_app, what, _name, _obj, _options, signature, return_annotation):
|
||||
"""Cleanup params: remove the 'self' param and all the cython types"""
|
||||
|
||||
if what not in ('function', 'method'):
|
||||
return
|
||||
return None
|
||||
|
||||
params = list()
|
||||
params = []
|
||||
for param in (p.strip() for p in signature[1:-1].split(',')):
|
||||
if param != 'self':
|
||||
params.append(param.rpartition(' ')[2])
|
||||
|
@ -178,15 +90,44 @@ def autodoc_process_signature(app, what, name, obj, options, signature, return_a
|
|||
return ('(%s)' % ', '.join(params), return_annotation)
|
||||
|
||||
|
||||
# -- Inheritance Diagram ------------------------------------------------------
|
||||
|
||||
try:
|
||||
import gv # pylint: disable=unused-import
|
||||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
extensions.append('sphinx.ext.inheritance_diagram')
|
||||
# svg scale better (look at the full elm dia)
|
||||
# but svg links are broken :(
|
||||
graphviz_output_format = 'png' # png (default) or svg
|
||||
inheritance_graph_attrs = dict(
|
||||
bgcolor = 'gray25', #404040
|
||||
)
|
||||
inheritance_node_attrs = dict(
|
||||
style = 'rounded', # or 'filled',
|
||||
# fillcolor = 'gray20', # bg color (should be #CCCCCC)
|
||||
color = 'gray10', # border color (should be #202020)
|
||||
fontcolor = 'white',
|
||||
font = 'sans',
|
||||
|
||||
)
|
||||
inheritance_edge_attrs = dict(
|
||||
color = 'dodgerblue3', # arrow color (should be #4399FF)
|
||||
dir = 'none', # arrow direction (back, forward, both or none)
|
||||
)
|
||||
|
||||
|
||||
# -- Options for HTML output ---------------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
#
|
||||
# html_theme = 'alabaster' # Default sphinx theme
|
||||
# html_theme = 'default' # Classic python style
|
||||
# html_theme = 'sphinxdoc' # Much modern sphinx style
|
||||
# html_theme = 'sphinx13' # The latest one from the sphinx site
|
||||
html_theme = 'efldoc' # EFL dark style
|
||||
html_theme = 'efldoc' # Our custom EFL dark style
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
|
@ -201,16 +142,16 @@ html_theme_path = ['themes']
|
|||
#html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
html_short_title = "Python EFL"
|
||||
html_short_title = 'Python EFL'
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
html_logo = "images/logo.png"
|
||||
html_logo = 'images/logo.png'
|
||||
|
||||
# The name of an image file (within the static path) to use as favicon of the
|
||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
html_favicon = "images/logo.ico"
|
||||
html_favicon = 'images/logo.ico'
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
|
@ -221,10 +162,6 @@ html_static_path = ['images']
|
|||
# using the given strftime format.
|
||||
html_last_updated_fmt = '%b %d, %Y'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
#html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
#html_sidebars = {}
|
||||
|
||||
|
@ -260,121 +197,3 @@ html_show_sourcelink = False
|
|||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'PythonEFLdoc'
|
||||
|
||||
|
||||
# -- Options for LaTeX output --------------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#'preamble': '',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title, author, documentclass [howto/manual]).
|
||||
latex_documents = [
|
||||
('index', 'PythonEFL.tex', u'Python Bindings for EFL Documentation',
|
||||
u'Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko', 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
#latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
#latex_use_parts = False
|
||||
|
||||
# If true, show page references after internal links.
|
||||
#latex_show_pagerefs = False
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#latex_show_urls = False
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#latex_domain_indices = True
|
||||
|
||||
|
||||
# -- Options for manual page output --------------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
('index', 'python-efl', u'Python Bindings for EFL Documentation',
|
||||
[u'Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko'], 1)
|
||||
]
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#man_show_urls = False
|
||||
|
||||
|
||||
# -- Options for Texinfo output ------------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
('index', 'PythonBindingsforEFLElementary', u'Python Bindings for EFL Elementary Documentation',
|
||||
u'Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko', 'PythonBindingsforEFLElementary', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#texinfo_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#texinfo_domain_indices = True
|
||||
|
||||
# How to display URL addresses: 'footnote', 'no', or 'inline'.
|
||||
#texinfo_show_urls = 'footnote'
|
||||
|
||||
|
||||
# -- Options for Epub output ---------------------------------------------------
|
||||
|
||||
# Bibliographic Dublin Core info.
|
||||
epub_title = u'Python Bindings for EFL'
|
||||
epub_author = u'Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko'
|
||||
epub_publisher = u'Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko'
|
||||
epub_copyright = u'2008-2014, Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko'
|
||||
|
||||
# The language of the text. It defaults to the language option
|
||||
# or en if the language is not set.
|
||||
#epub_language = ''
|
||||
|
||||
# The scheme of the identifier. Typical schemes are ISBN or URL.
|
||||
#epub_scheme = ''
|
||||
|
||||
# The unique identifier of the text. This can be a ISBN number
|
||||
# or the project homepage.
|
||||
#epub_identifier = ''
|
||||
|
||||
# A unique identification for the text.
|
||||
#epub_uid = ''
|
||||
|
||||
# A tuple containing the cover image and cover page html template filenames.
|
||||
#epub_cover = ()
|
||||
|
||||
# HTML files that should be inserted before the pages created by sphinx.
|
||||
# The format is a list of tuples containing the path and title.
|
||||
#epub_pre_files = []
|
||||
|
||||
# HTML files shat should be inserted after the pages created by sphinx.
|
||||
# The format is a list of tuples containing the path and title.
|
||||
#epub_post_files = []
|
||||
|
||||
# A list of files that should not be packed into the epub file.
|
||||
#epub_exclude_files = []
|
||||
|
||||
# The depth of the table of contents in toc.ncx.
|
||||
#epub_tocdepth = 3
|
||||
|
||||
# Allow duplicate toc entries.
|
||||
#epub_tocdup = True
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
.. currentmodule:: efl.ecore
|
||||
|
||||
:class:`efl.ecore.AnimatorTimeline` Class
|
||||
=========================================
|
||||
|
||||
.. autoclass:: efl.ecore.AnimatorTimeline
|
|
@ -0,0 +1,6 @@
|
|||
.. currentmodule:: efl.ecore_con
|
||||
|
||||
:class:`efl.ecore_con.Lookup` Class
|
||||
===================================
|
||||
|
||||
.. autoclass:: efl.ecore_con.Lookup
|
|
@ -0,0 +1,9 @@
|
|||
.. currentmodule:: efl.ecore_con
|
||||
|
||||
:class:`efl.ecore_con.Url` Class
|
||||
===================================
|
||||
|
||||
.. autoclass:: efl.ecore_con.Url
|
||||
.. autoclass:: efl.ecore_con.EventUrlComplete
|
||||
.. autoclass:: efl.ecore_con.EventUrlProgress
|
||||
.. autoclass:: efl.ecore_con.EventUrlData
|
|
@ -1,4 +1,6 @@
|
|||
|
||||
.. _ecore_main_intro:
|
||||
|
||||
What is Ecore?
|
||||
--------------
|
||||
|
||||
|
@ -13,8 +15,8 @@ great responsiveness without the need for threads(or any other concurrency).
|
|||
Timers
|
||||
------
|
||||
|
||||
:py:class:`Timers<efl.ecore.Timer>` serve two main purposes: doing something at a specified time and
|
||||
repeatedly doing something with a set interval.
|
||||
:py:class:`Timers<efl.ecore.Timer>` serve two main purposes: doing something at
|
||||
a specified time and repeatedly doing something with a set interval.
|
||||
|
||||
|
||||
Animators
|
||||
|
@ -54,6 +56,14 @@ anything your program should do just before processing events (also timers,
|
|||
pollers, file descriptor handlers and animators)
|
||||
|
||||
|
||||
Process Execution
|
||||
-----------------
|
||||
|
||||
The :py:class:`~efl.ecore.Exe` class is used to spawn child processes in a
|
||||
full async fashion. Standard in/out/error of the child are available for
|
||||
communication using callbacks.
|
||||
|
||||
|
||||
File descriptor handlers
|
||||
------------------------
|
||||
|
||||
|
@ -63,14 +73,6 @@ error. Any valid file descriptor can be used with this API, regardless of if
|
|||
was gotten with an OS specific API or from ecore.
|
||||
see :py:class:`FdHandler<efl.ecore.FdHandler>`
|
||||
|
||||
File download
|
||||
-------------
|
||||
|
||||
Ecore provide the :py:class:`FileDownload<efl.ecore.FileDownload>` class
|
||||
to perform asyncronous download of files from the net. Two callbacks are
|
||||
used to inform the user while progress occurs and when the download has
|
||||
finished.
|
||||
|
||||
|
||||
File monitor
|
||||
------------
|
||||
|
@ -81,23 +83,40 @@ Events will be generatd everytime a file or directory (that live in the
|
|||
give path) is created/deleted/modified.
|
||||
|
||||
|
||||
File download
|
||||
-------------
|
||||
|
||||
Ecore provide the :py:class:`FileDownload<efl.ecore.FileDownload>` class
|
||||
to perform asyncronous download of files from the net. Two callbacks are
|
||||
used to inform the user while progress occurs and when the download has
|
||||
finished.
|
||||
|
||||
|
||||
Ecore Con
|
||||
---------
|
||||
|
||||
The ecore_con module provide various utilities to perform different network
|
||||
related tasks. Everything provided in a fully async way. Most notable are the
|
||||
:class:`efl.ecore_con.Lookup` class to perform DNS requests, the
|
||||
:class:`efl.ecore_con.Url` class to perform HTTP requests and the
|
||||
:class:`efl.ecore_con.Server` class to implement your own server.
|
||||
|
||||
|
||||
|
||||
API Reference
|
||||
-------------
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 4
|
||||
:titlesonly:
|
||||
|
||||
ecore_module
|
||||
x
|
||||
timer
|
||||
animator
|
||||
poller
|
||||
idler
|
||||
idleenterer
|
||||
idleexiter
|
||||
exe
|
||||
fdhandler
|
||||
filedownload
|
||||
filemonitor
|
||||
module-ecore
|
||||
module-ecore_input
|
||||
module-ecore_con
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
-------------------
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.ecore
|
||||
:parts: 2
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
:mod:`efl.ecore` Module
|
||||
=======================
|
||||
|
||||
.. automodule:: efl.ecore
|
||||
:exclude-members: Animator, AnimatorTimeline, Exe, FdHandler, FileDownload,
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
.. automodule:: efl.ecore_con
|
||||
:exclude-members: Url, EventUrlComplete, EventUrlProgress, EventUrlData,
|
||||
Lookup, ConEventFilter
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
.. automodule:: efl.ecore_input
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`efl.ecore.x` Module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: efl.ecore.x
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.ecore.x
|
||||
:parts: 2
|
|
@ -1,7 +1,6 @@
|
|||
.. currentmodule:: efl.edje
|
||||
|
||||
:class:`efl.edje.Edje` Class
|
||||
==============================
|
||||
============================
|
||||
|
||||
.. autoclass:: efl.edje.Edje
|
||||
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
.. currentmodule:: efl.edje_edit
|
||||
|
||||
:class:`efl.edje_edit.EdjeEdit` Class
|
||||
=======================================
|
||||
|
||||
.. autoclass:: efl.edje_edit.EdjeEdit
|
||||
:undoc-members:
|
|
@ -1,10 +1,8 @@
|
|||
:mod:`efl.edje` Module
|
||||
=======================
|
||||
|
||||
.. module:: efl.edje
|
||||
.. _edje_main_intro:
|
||||
|
||||
What is Edje?
|
||||
--------------
|
||||
=============
|
||||
|
||||
Edje is a complex graphical design & layout library.
|
||||
|
||||
|
@ -42,7 +40,7 @@ use Edje as a convenient way of being able to configure parts of the display.
|
|||
|
||||
|
||||
So how does this all work?
|
||||
--------------------------
|
||||
==========================
|
||||
|
||||
Edje internally holds a geometry state machine and state graph of what is
|
||||
visible, not, where, at what size, with what colors etc. This is described
|
||||
|
@ -57,28 +55,44 @@ use. Edje will load such information and create all the required
|
|||
children objects with the specified properties as defined in each
|
||||
**part** of the given **group**.
|
||||
|
||||
Although simple, this example illustrates that animations and state
|
||||
changes can be done from the Edje file itself without any requirement
|
||||
in the Python application.
|
||||
Edje is an important EFL component because it makes easy to split logic and
|
||||
UI, usually used as theme engine but can be much more powerful than just
|
||||
changing some random images or text fonts.
|
||||
|
||||
Before digging into changing or creating your own Edje source (edc)
|
||||
files, read the @ref edcref.
|
||||
Edje also provides scripting through Embryo and communication can be
|
||||
done using messages and signals.
|
||||
|
||||
.. seealso::
|
||||
Before digging into changing or creating your own Edje source (edc)
|
||||
files, read the `Edje Data Collection reference
|
||||
<https://build.enlightenment.org/job/nightly_efl_gcc_x86_64/lastSuccessful
|
||||
Buil d/artifact/doc/html/edcref.html>`_ .
|
||||
|
||||
|
||||
Reference
|
||||
---------
|
||||
Signals from the edje object
|
||||
============================
|
||||
You can debug signals and messagges by capturing all of them, example::
|
||||
|
||||
def sig_dbg(obj, emission, source):
|
||||
print(obj, emission, source)
|
||||
|
||||
def msg_dbg(obj, msg):
|
||||
print(obj, msg)
|
||||
|
||||
my_edje.signal_callback_add("*", "*", sig_dbg)
|
||||
my_edje.message_handler_set(msg_dbg)
|
||||
|
||||
|
||||
API Reference
|
||||
=============
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 4
|
||||
|
||||
class-edje
|
||||
class-edje_edit
|
||||
:titlesonly:
|
||||
|
||||
module-edje.rst
|
||||
|
||||
Inheritance diagram
|
||||
-------------------
|
||||
===================
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.edje
|
||||
.. inheritance-diagram:: efl.edje
|
||||
:parts: 2
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
.. automodule:: efl.edje
|
||||
:exclude-members: Edje
|
80
doc/efl.rst
80
doc/efl.rst
|
@ -5,10 +5,31 @@
|
|||
|
||||
.. versionadded:: 1.8
|
||||
|
||||
|
||||
Object lifetime
|
||||
---------------
|
||||
|
||||
Eo objects (and any which have the delete() method) get their reference count
|
||||
internally increased by one at object creation. This means that these objects
|
||||
will not get freed when you release all references to them in your application.
|
||||
You must call the objects' delete() method to decrease the internal reference
|
||||
count. This will usually also trigger some kind of action to destroy
|
||||
the object gracefully, i.e. hiding the graphical object etc, and will set the
|
||||
C object pointer to NULL, which will prevent you from calling methods on the
|
||||
object.
|
||||
|
||||
If you can't keep track of when your application calls the delete method, you
|
||||
can check that your object is still valid with either the is_deleted() method,
|
||||
or with a non-zero check::
|
||||
|
||||
if eo_obj:
|
||||
print(repr(eo_obj))
|
||||
|
||||
|
||||
Logging
|
||||
-------
|
||||
|
||||
PyEFL provides `logging <http://docs.python.org/2/library/logging.html>`_
|
||||
PyEFL provides `logging <https://docs.python.org/library/logging.html>`_
|
||||
to loggers which are usually named after their equivalent module,
|
||||
f.e. *efl.eo*. There is a root logger called *efl* which also receives
|
||||
any messages coming from the underlying C libraries.
|
||||
|
@ -36,6 +57,7 @@ And you may control the child loggers individually::
|
|||
.. versionadded:: 1.8
|
||||
Loggers
|
||||
|
||||
|
||||
Class properties
|
||||
----------------
|
||||
|
||||
|
@ -51,3 +73,59 @@ are not already used by the constructor, for example like this::
|
|||
|
||||
.. versionadded:: 1.8
|
||||
Using keyword arguments to set properties
|
||||
|
||||
|
||||
Distutils helpers for your setup.py
|
||||
-----------------------------------
|
||||
|
||||
.. versionadded:: 1.13
|
||||
|
||||
For your convenience **python-efl** provide some usefull `distutils
|
||||
<https://docs.python.org/2/distutils/>`_ Commands to be used in your
|
||||
**setup.py** script.
|
||||
|
||||
Provided commands are:
|
||||
* ``build_edc`` To build (using edje_cc) and install your application themes.
|
||||
* ``build_i18n`` To integrate the gettext framework.
|
||||
* ``build_fdo`` To install .desktop and icons as per FreeDesktop specifications.
|
||||
* ``uninstall`` To uninstall your app.
|
||||
* ``build_extra`` Adds the provided commands to the build target.
|
||||
|
||||
The usage is quite simple, just import and add them in your setup() cmdclass.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from distutils.core import setup
|
||||
from efl.utils.setup import build_edc, build_i18n, build_fdo
|
||||
from efl.utils.setup import build_extra, uninstall
|
||||
|
||||
setup(
|
||||
...
|
||||
cmdclass = {
|
||||
'build': build_extra,
|
||||
'build_edc': build_edc,
|
||||
'build_i18n': build_i18n,
|
||||
'build_fdo': build_fdo,
|
||||
'uninstall': uninstall,
|
||||
},
|
||||
command_options={
|
||||
'install': {'record': ('setup.py', 'installed_files.txt')}
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
The **install** option is required if you want to use the **uninstall** command.
|
||||
|
||||
The **build_extra** command is only used to automatically add all the other
|
||||
commands to the default build command, you probably always want it, unless
|
||||
you are providing your own yet.
|
||||
|
||||
Once you have added a command you can look at the help for more informations,
|
||||
for example::
|
||||
|
||||
python setup.py build_i18n --help
|
||||
|
||||
or more in general::
|
||||
|
||||
python setup.py --help-commands
|
||||
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Actionslider
|
||||
############
|
||||
|
||||
.. image:: /images/actionslider-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
An actionslider is a switcher for two or three labels with
|
||||
customizable magnet properties.
|
||||
|
||||
The user drags and releases the indicator, to choose a label.
|
||||
|
||||
Labels can occupy the following positions.
|
||||
|
||||
- Left
|
||||
- Right
|
||||
- Center
|
||||
|
||||
Positions can be enabled or disabled.
|
||||
|
||||
Magnets can be set on the above positions.
|
||||
|
||||
When the indicator is released, it will move to its nearest "enabled and
|
||||
magnetized" position.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``selected`` - when user selects an enabled position (the label is
|
||||
passed as event info)".
|
||||
- ``pos_changed`` - when the indicator reaches any of the
|
||||
positions("left", "right" or "center").
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``indicator`` - An indicator label of the actionslider
|
||||
- ``left`` - A left label of the actionslider
|
||||
- ``right`` - A right label of the actionslider
|
||||
- ``center`` - A center label of the actionslider
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Actionslider_Pos:
|
||||
|
||||
Actionslider positions
|
||||
----------------------
|
||||
|
||||
.. data:: ELM_ACTIONSLIDER_NONE
|
||||
|
||||
No position
|
||||
|
||||
.. data:: ELM_ACTIONSLIDER_LEFT
|
||||
|
||||
Left position
|
||||
|
||||
.. data:: ELM_ACTIONSLIDER_CENTER
|
||||
|
||||
Center position
|
||||
|
||||
.. data:: ELM_ACTIONSLIDER_RIGHT
|
||||
|
||||
Right position
|
||||
|
||||
.. data:: ELM_ACTIONSLIDER_ALL
|
||||
|
||||
All positions
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Actionslider
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Actionslider
|
|
@ -0,0 +1,58 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Background
|
||||
##########
|
||||
|
||||
.. image:: /images/background-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
The background widget is used for setting a solid color, image or Edje group
|
||||
as a background to a window (unless it has transparency enabled) or any
|
||||
container object.
|
||||
|
||||
It works just like an image, but has some properties useful to a
|
||||
background, like setting it to tiled, centered, scaled or stretched.
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``overlay`` - overlay of the bg
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Bg_Option:
|
||||
|
||||
Background display modes
|
||||
------------------------
|
||||
|
||||
.. data:: ELM_BG_OPTION_CENTER
|
||||
|
||||
Center
|
||||
|
||||
.. data:: ELM_BG_OPTION_SCALE
|
||||
|
||||
Scale
|
||||
|
||||
.. data:: ELM_BG_OPTION_STRETCH
|
||||
|
||||
Stretch
|
||||
|
||||
.. data:: ELM_BG_OPTION_TILE
|
||||
|
||||
Tile
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Background
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Background
|
|
@ -0,0 +1,118 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Box
|
||||
###
|
||||
|
||||
.. image:: /images/box-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
A box arranges objects in a linear fashion, governed by a layout function
|
||||
that defines the details of this arrangement.
|
||||
|
||||
By default, the box will use an internal function to set the layout to
|
||||
a single row, either vertical or horizontal. This layout is affected
|
||||
by a number of parameters, such as the homogeneous flag set by
|
||||
:py:attr:`~Box.homogeneous`, the values given by :py:attr:`~Box.padding` and
|
||||
:py:attr:`~Box.align` and the hints set to each object in the box.
|
||||
|
||||
For this default layout, it's possible to change the orientation with
|
||||
:py:attr:`~Box.horizontal`. The box will start in the vertical orientation,
|
||||
placing its elements ordered from top to bottom. When horizontal is set,
|
||||
the order will go from left to right. If the box is set to be
|
||||
homogeneous, every object in it will be assigned the same space, that
|
||||
of the largest object. Padding can be used to set some spacing between
|
||||
the cell given to each object. The alignment of the box, set with
|
||||
:py:attr:`~Box.align`, determines how the bounding box of all the elements
|
||||
will be placed within the space given to the box widget itself.
|
||||
|
||||
The size hints of each object also affect how they are placed and sized
|
||||
within the box. :py:attr:`~efl.evas.Object.size_hint_min` will give the minimum
|
||||
size the object can have, and the box will use it as the basis for all
|
||||
latter calculations. Elementary widgets set their own minimum size as
|
||||
needed, so there's rarely any need to use it manually.
|
||||
|
||||
:py:attr:`~efl.evas.Object.size_hint_weight`, when not in homogeneous mode, is
|
||||
used to tell whether the object will be allocated the minimum size it
|
||||
needs or if the space given to it should be expanded. It's important
|
||||
to realize that expanding the size given to the object is not the same
|
||||
thing as resizing the object. It could very well end being a small
|
||||
widget floating in a much larger empty space. If not set, the weight
|
||||
for objects will normally be 0.0 for both axis, meaning the widget will
|
||||
not be expanded. To take as much space possible, set the weight to
|
||||
``EVAS_HINT_EXPAND`` (defined to 1.0) for the desired axis to expand.
|
||||
|
||||
Besides how much space each object is allocated, it's possible to control
|
||||
how the widget will be placed within that space using
|
||||
:py:attr:`~efl.evas.Object.size_hint_align`. By default, this value will be 0.5
|
||||
for both axis, meaning the object will be centered, but any value from
|
||||
0.0 (left or top, for the ``x`` and ``y`` axis, respectively) to 1.0
|
||||
(right or bottom) can be used. The special value *EVAS_HINT_FILL*, which
|
||||
is -1.0, means the object will be resized to fill the entire space it
|
||||
was allocated.
|
||||
|
||||
In addition, customized functions to define the layout can be set, which
|
||||
allow the application developer to organize the objects within the box
|
||||
in any number of ways.
|
||||
|
||||
The special :py:meth:`Box.layout_transition` function can be used
|
||||
to switch from one layout to another, animating the motion of the
|
||||
children of the box.
|
||||
|
||||
.. note:: Objects should not be added to box objects using _add() calls.
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Evas_Object_Box_Layout:
|
||||
|
||||
Box layout modes
|
||||
----------------
|
||||
|
||||
.. data:: ELM_BOX_LAYOUT_HORIZONTAL
|
||||
|
||||
Horizontal layout
|
||||
|
||||
.. data:: ELM_BOX_LAYOUT_VERTICAL
|
||||
|
||||
Vertical layout
|
||||
|
||||
.. data:: ELM_BOX_LAYOUT_HOMOGENEOUS_VERTICAL
|
||||
|
||||
Homogeneous vertical layout
|
||||
|
||||
.. data:: ELM_BOX_LAYOUT_HOMOGENEOUS_HORIZONTAL
|
||||
|
||||
Homogeneous horizontal layout
|
||||
|
||||
.. data:: ELM_BOX_LAYOUT_HOMOGENEOUS_MAX_SIZE_HORIZONTAL
|
||||
|
||||
Homogeneous layout, maximum size on the horizontal axis
|
||||
|
||||
.. data:: ELM_BOX_LAYOUT_HOMOGENEOUS_MAX_SIZE_VERTICAL
|
||||
|
||||
Homogeneous layout, maximum size on the horizontal axis
|
||||
|
||||
.. data:: ELM_BOX_LAYOUT_FLOW_HORIZONTAL
|
||||
|
||||
Horizontally flowing layout
|
||||
|
||||
.. data:: ELM_BOX_LAYOUT_FLOW_VERTICAL
|
||||
|
||||
Vertically flowing layout
|
||||
|
||||
.. data:: ELM_BOX_LAYOUT_STACK
|
||||
|
||||
Stacking layout
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Box
|
||||
:parts: 2
|
||||
|
||||
.. autoclass:: Box
|
|
@ -0,0 +1,86 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Bubble
|
||||
######
|
||||
|
||||
.. image:: /images/bubble-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
The Bubble is a widget to show text similar to how speech is
|
||||
represented in comics.
|
||||
|
||||
The bubble widget contains 5 important visual elements:
|
||||
|
||||
- The frame is a rectangle with rounded edjes and an "arrow".
|
||||
- The ``icon`` is an image to which the frame's arrow points to.
|
||||
- The ``label`` is a text which appears to the right of the icon if the
|
||||
corner is **top_left** or **bottom_left** and is right aligned to
|
||||
the frame otherwise.
|
||||
- The ``info`` is a text which appears to the right of the label. Info's
|
||||
font is of a lighter color than label.
|
||||
- The ``content`` is an evas object that is shown inside the frame.
|
||||
|
||||
The position of the arrow, icon, label and info depends on which corner is
|
||||
selected. The four available corners are:
|
||||
|
||||
- ``top_left`` - Default
|
||||
- ``top_right``
|
||||
- ``bottom_left``
|
||||
- ``bottom_right``
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``default`` - A content of the bubble
|
||||
- ``icon`` - An icon of the bubble
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - Label of the bubble
|
||||
- ``info`` - info of the bubble
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``clicked`` - This is called when a user has clicked the bubble.
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Bubble_Pos:
|
||||
|
||||
Bubble arrow positions
|
||||
----------------------
|
||||
|
||||
.. data:: ELM_BUBBLE_POS_TOP_LEFT
|
||||
|
||||
Top left position
|
||||
|
||||
.. data:: ELM_BUBBLE_POS_TOP_RIGHT
|
||||
|
||||
Top right position
|
||||
|
||||
.. data:: ELM_BUBBLE_POS_BOTTOM_LEFT
|
||||
|
||||
Bottom left position
|
||||
|
||||
.. data:: ELM_BUBBLE_POS_BOTTOM_RIGHT
|
||||
|
||||
Bottom right position
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Bubble
|
||||
:parts: 2
|
||||
|
||||
.. autoclass:: Bubble
|
|
@ -0,0 +1,63 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Button
|
||||
######
|
||||
|
||||
.. image:: /images/button-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
This is a push-button. Press it and run some function. It can contain
|
||||
a simple label and icon object and it also has an autorepeat feature.
|
||||
|
||||
|
||||
Available styles
|
||||
================
|
||||
|
||||
- ``default`` a normal button.
|
||||
- ``anchor`` Like default, but the button fades away when the mouse is not
|
||||
over it, leaving only the text or icon.
|
||||
- ``hoversel_vertical`` Internally used by
|
||||
:py:class:`~efl.elementary.hoversel.Hoversel` to give a continuous look
|
||||
across its options.
|
||||
- ``hoversel_vertical_entry`` Another internal for
|
||||
:py:class:`~efl.elementary.hoversel.Hoversel`.
|
||||
- ``naviframe`` Internally used by
|
||||
:py:class:`~efl.elementary.naviframe.Naviframe` for its back button.
|
||||
- ``colorselector`` Internally used by
|
||||
:py:class:`~efl.elementary.colorselector.Colorselector` for its left and
|
||||
right buttons.
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``icon`` - An icon of the button
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - Label of the button
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``clicked``: the user clicked the button (press/release).
|
||||
- ``repeated``: the user pressed the button without releasing it.
|
||||
- ``pressed``: button was pressed.
|
||||
- ``unpressed``: button was released after being pressed.
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Button
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Button
|
||||
|
|
@ -0,0 +1,169 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Calendar
|
||||
########
|
||||
|
||||
.. image:: /images/calendar-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
This is a calendar widget.
|
||||
|
||||
It helps applications to flexibly display a calender with day of the week,
|
||||
date, year and month. Applications are able to set specific dates to be
|
||||
reported back, when selected, in the smart callbacks of the calendar widget.
|
||||
The API of this widget lets the applications perform other functions, like:
|
||||
|
||||
- placing marks on specific dates
|
||||
- setting the bounds for the calendar (minimum and maximum years)
|
||||
- setting the day names of the week (e.g. "Thu" or "Thursday")
|
||||
- setting the year and month format.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``changed`` - emitted when the date in the calendar is changed.
|
||||
- ``display,changed`` - emitted when the current month displayed in the
|
||||
calendar is changed.
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Calendar_Mark_Repeat_Type:
|
||||
|
||||
Calendar mark repeat types
|
||||
--------------------------
|
||||
|
||||
.. data:: ELM_CALENDAR_UNIQUE
|
||||
|
||||
Default value.
|
||||
|
||||
Marks will be displayed only on event day.
|
||||
|
||||
.. data:: ELM_CALENDAR_DAILY
|
||||
|
||||
Marks will be displayed every day after event day (inclusive).
|
||||
|
||||
.. data:: ELM_CALENDAR_WEEKLY
|
||||
|
||||
Marks will be displayed every week after event day (inclusive) - i.e.
|
||||
each seven days.
|
||||
|
||||
.. data:: ELM_CALENDAR_MONTHLY
|
||||
|
||||
Marks will be displayed every month day that coincides to event day.
|
||||
|
||||
E.g.: if an event is set to 30th Jan, no marks will be displayed on Feb,
|
||||
but will be displayed on 30th Mar
|
||||
|
||||
.. data:: ELM_CALENDAR_ANNUALLY
|
||||
|
||||
Marks will be displayed every year that coincides to event day (and month).
|
||||
|
||||
E.g. an event added to 30th Jan 2012 will be repeated on 30th Jan 2013.
|
||||
|
||||
.. data:: ELM_CALENDAR_LAST_DAY_OF_MONTH
|
||||
|
||||
Marks will be displayed every last day of month after event day
|
||||
(inclusive).
|
||||
|
||||
.. data:: ELM_CALENDAR_REVERSE_DAILY
|
||||
|
||||
Marks will be displayed every day before event day.
|
||||
|
||||
.. versionadded:: 1.19
|
||||
|
||||
|
||||
.. _Elm_Calendar_Select_Mode:
|
||||
|
||||
Calendar selection modes
|
||||
------------------------
|
||||
|
||||
.. data:: ELM_CALENDAR_SELECT_MODE_DEFAULT
|
||||
|
||||
Default mode
|
||||
|
||||
.. data:: ELM_CALENDAR_SELECT_MODE_ALWAYS
|
||||
|
||||
Select always
|
||||
|
||||
.. data:: ELM_CALENDAR_SELECT_MODE_NONE
|
||||
|
||||
Don't select
|
||||
|
||||
.. data:: ELM_CALENDAR_SELECT_MODE_ONDEMAND
|
||||
|
||||
Select on demand
|
||||
|
||||
|
||||
.. _Elm_Calendar_Selectable:
|
||||
|
||||
Selectable
|
||||
----------
|
||||
|
||||
.. data:: ELM_CALENDAR_SELECTABLE_NONE
|
||||
|
||||
None selectable
|
||||
|
||||
.. data:: ELM_CALENDAR_SELECTABLE_YEAR
|
||||
|
||||
Year is selectable
|
||||
|
||||
.. data:: ELM_CALENDAR_SELECTABLE_MONTH
|
||||
|
||||
Month is selectable
|
||||
|
||||
.. data:: ELM_CALENDAR_SELECTABLE_DAY
|
||||
|
||||
Day is selectable
|
||||
|
||||
|
||||
.. _Elm_Calendar_Weekday:
|
||||
|
||||
Days
|
||||
----
|
||||
|
||||
.. data:: ELM_DAY_SUNDAY
|
||||
|
||||
Sunday
|
||||
|
||||
.. data:: ELM_DAY_MONDAY
|
||||
|
||||
Monday
|
||||
|
||||
.. data:: ELM_DAY_TUESDAY
|
||||
|
||||
Tuesday
|
||||
|
||||
.. data:: ELM_DAY_WEDNESDAY
|
||||
|
||||
Wednesday
|
||||
|
||||
.. data:: ELM_DAY_THURSDAY
|
||||
|
||||
Thursday
|
||||
|
||||
.. data:: ELM_DAY_FRIDAY
|
||||
|
||||
Friday
|
||||
|
||||
.. data:: ELM_DAY_SATURDAY
|
||||
|
||||
Saturday
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram::
|
||||
Calendar
|
||||
CalendarMark
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Calendar
|
||||
.. autoclass:: CalendarMark
|
|
@ -0,0 +1,47 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Check
|
||||
#####
|
||||
|
||||
.. image:: /images/check-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
The check widget allows for toggling a value between true and false.
|
||||
|
||||
Check objects are a lot like radio objects in layout and functionality,
|
||||
except they do not work as a group, but independently, and only toggle
|
||||
the value of a boolean :py:attr:`~Check.state` between false and true.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``changed`` - This is called whenever the user changes the state of
|
||||
the check objects.
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``icon`` - An icon of the check
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - A label of the check
|
||||
- ``on`` - On state label of the check
|
||||
- ``off`` - Off state label of the check
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Check
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Check
|
|
@ -0,0 +1,92 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Clock
|
||||
#####
|
||||
|
||||
.. image:: /images/clock-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
This is a digital clock widget.
|
||||
|
||||
In its default theme, it has a vintage "flipping numbers clock" appearance,
|
||||
which will animate sheets of individual algarisms individually as time goes
|
||||
by.
|
||||
|
||||
A newly created clock will fetch system's time (already considering
|
||||
local time adjustments) to start with, and will tick accordingly. It may
|
||||
or may not show seconds.
|
||||
|
||||
Clocks have an **edition** mode. When in it, the sheets will display
|
||||
extra arrow indications on the top and bottom and the user may click on
|
||||
them to raise or lower the time values. After it's told to exit edition
|
||||
mode, it will keep ticking with that new time set (it keeps the
|
||||
difference from local time).
|
||||
|
||||
Also, when under edition mode, user clicks on the cited arrows which are
|
||||
**held** for some time will make the clock to flip the sheet, thus
|
||||
editing the time, continuously and automatically for the user. The
|
||||
interval between sheet flips will keep growing in time, so that it helps
|
||||
the user to reach a time which is distant from the one set.
|
||||
|
||||
The time display is, by default, in military mode (24h), but an am/pm
|
||||
indicator may be optionally shown, too, when it will switch to 12h.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``changed`` - the clock's user changed the time
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Clock_Edit_Mode:
|
||||
|
||||
Clock edit modes
|
||||
----------------
|
||||
|
||||
.. data:: ELM_CLOCK_EDIT_DEFAULT
|
||||
|
||||
Default edit
|
||||
|
||||
.. data:: ELM_CLOCK_EDIT_HOUR_DECIMAL
|
||||
|
||||
Edit hours' decimal
|
||||
|
||||
.. data:: ELM_CLOCK_EDIT_HOUR_UNIT
|
||||
|
||||
Edit hours' unit
|
||||
|
||||
.. data:: ELM_CLOCK_EDIT_MIN_DECIMAL
|
||||
|
||||
Edit minutes' decimal
|
||||
|
||||
.. data:: ELM_CLOCK_EDIT_MIN_UNIT
|
||||
|
||||
Edit minutes' unit
|
||||
|
||||
.. data:: ELM_CLOCK_EDIT_SEC_DECIMAL
|
||||
|
||||
Edit seconds' decimal
|
||||
|
||||
.. data:: ELM_CLOCK_EDIT_SEC_UNIT
|
||||
|
||||
Edit seconds' unit
|
||||
|
||||
.. data:: ELM_CLOCK_EDIT_ALL
|
||||
|
||||
Edit all
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Clock
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Clock
|
|
@ -0,0 +1,64 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Colorselector
|
||||
#############
|
||||
|
||||
.. image:: /images/colorselector-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
A Colorselector is a color selection widget.
|
||||
|
||||
It allows application to set a series of colors. It also allows to
|
||||
load/save colors from/to config with a unique identifier, by default,
|
||||
the colors are loaded/saved from/to config using "default" identifier.
|
||||
The colors can be picked by user from the color set by clicking on
|
||||
individual color item on the palette or by selecting it from selector.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``"changed"`` - When the color value changes on selector
|
||||
- ``"color,item,selected"`` - When user clicks on color item.
|
||||
The event_info parameter of the callback will be the selected
|
||||
color item.
|
||||
- ``"color,item,longpressed"`` - When user long presses on color item.
|
||||
The event_info parameter of the callback will be the selected
|
||||
color item.
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Colorselector_Mode:
|
||||
|
||||
Colorselector modes
|
||||
-------------------
|
||||
|
||||
.. data:: ELM_COLORSELECTOR_PALETTE
|
||||
|
||||
Show palette
|
||||
|
||||
.. data:: ELM_COLORSELECTOR_COMPONENTS
|
||||
|
||||
Show components
|
||||
|
||||
.. data:: ELM_COLORSELECTOR_BOTH
|
||||
|
||||
Show palette and components
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram::
|
||||
Colorselector
|
||||
ColorselectorPaletteItem
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Colorselector
|
||||
.. autoclass:: ColorselectorPaletteItem
|
|
@ -0,0 +1,54 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Combobox
|
||||
########
|
||||
|
||||
.. warning::
|
||||
**THE COMBOBOX IS BROKEN AND DEPRECATED, DO NOT USE IN ANY CASE !!**
|
||||
|
||||
The behaviour and the API of the Combobox will change in future release.
|
||||
|
||||
If you are already using this we really encourage you to switch
|
||||
to other widgets.
|
||||
|
||||
We are really sorry about this breakage, but there is nothing we can do
|
||||
to avoid this :(
|
||||
|
||||
.. image:: /images/combobox-preview.png
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
This is a the classic combobox widget, it is the composition of a
|
||||
:class:`Button`, an :class:`Entry`, a :class:`Genlist` and an :class:`Hover`.
|
||||
Thus you can use all the functionality of the base classes on the
|
||||
:class:`Combobox` itself.
|
||||
|
||||
|
||||
Available styles
|
||||
================
|
||||
|
||||
- ``default`` a normal combobox.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``dismissed``: The combobox hover has been dismissed.
|
||||
- ``expanded``: The combobox hover has been expanded.
|
||||
- ``clicked``: The combobox button has been clicked.
|
||||
- ``item,selected``: An item has been selected (highlighted).
|
||||
- ``item,pressed``: An item has been pressed (clicked).
|
||||
- ``filter,done``: Item filtering on genlist is completed.
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Combobox
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: _Combobox
|
||||
.. autoclass:: Combobox
|
||||
|
|
@ -0,0 +1,162 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Configuration
|
||||
#############
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Elementary configuration is formed by a set options bounded to a
|
||||
given profile, like theme, "finger size", etc.
|
||||
|
||||
These are functions with which one synchronizes changes made to those
|
||||
values to the configuration storing files, de facto. You most probably
|
||||
don't want to use the functions in this group unless you're writing an
|
||||
elementary configuration manager.
|
||||
|
||||
Profiles
|
||||
========
|
||||
|
||||
Profiles are pre-set options that affect the whole look-and-feel of
|
||||
Elementary-based applications. There are, for example, profiles
|
||||
aimed at desktop computer applications and others aimed at mobile,
|
||||
touchscreen-based ones. You most probably don't want to use the
|
||||
functions in this group unless you're writing an elementary
|
||||
configuration manager.
|
||||
|
||||
Elementary Scrolling
|
||||
====================
|
||||
|
||||
These set how scrollable views in Elementary widgets should behave on
|
||||
user interaction.
|
||||
|
||||
Password show last
|
||||
==================
|
||||
|
||||
Show last feature of password mode enables user to view the last input
|
||||
entered for few seconds before masking it. These functions allow to set
|
||||
this feature in password mode of entry widget and also allow to
|
||||
manipulate the duration for which the input has to be visible.
|
||||
|
||||
Elementary Engine
|
||||
=================
|
||||
|
||||
These are functions setting and querying which rendering engine
|
||||
Elementary will use for drawing its windows' pixels.
|
||||
|
||||
The following are the available engines:
|
||||
|
||||
- "software_x11"
|
||||
- "fb"
|
||||
- "directfb"
|
||||
- "software_16_x11"
|
||||
- "software_8_x11"
|
||||
- "xrender_x11"
|
||||
- "opengl_x11"
|
||||
- "software_gdi"
|
||||
- "software_16_wince_gdi"
|
||||
- "sdl"
|
||||
- "software_16_sdl"
|
||||
- "opengl_sdl"
|
||||
- "buffer"
|
||||
- "ews"
|
||||
- "opengl_cocoa"
|
||||
- "psl1ght"
|
||||
|
||||
|
||||
ATSPI AT-SPI2 Accessibility
|
||||
===========================
|
||||
|
||||
Elementary widgets support Linux Accessibility standard. For more
|
||||
information please visit:
|
||||
http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Softcursor_Mode:
|
||||
|
||||
Elm_Softcursor_Mode
|
||||
-------------------
|
||||
|
||||
.. data:: ELM_SOFTCURSOR_MODE_AUTO
|
||||
|
||||
Auto-detect if a software cursor should be used (default)
|
||||
|
||||
.. data:: ELM_SOFTCURSOR_MODE_ON
|
||||
|
||||
Always use a softcursor
|
||||
|
||||
.. data:: ELM_SOFTCURSOR_MODE_OFF
|
||||
|
||||
Never use a softcursor
|
||||
|
||||
|
||||
.. _Elm_Slider_Indicator_Visible_Mode:
|
||||
|
||||
Elm_Slider_Indicator_Visible_Mode
|
||||
---------------------------------
|
||||
|
||||
.. data:: ELM_SLIDER_INDICATOR_VISIBLE_MODE_DEFAULT
|
||||
|
||||
show indicator on mouse down or change in slider value
|
||||
|
||||
.. data:: ELM_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS
|
||||
|
||||
Always show the indicator
|
||||
|
||||
.. data:: ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS
|
||||
|
||||
Show the indicator on focus
|
||||
|
||||
.. data:: ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE
|
||||
|
||||
Never show the indicator
|
||||
|
||||
|
||||
.. _Edje_Channel:
|
||||
|
||||
Audio Channels
|
||||
--------------
|
||||
|
||||
.. data:: EDJE_CHANNEL_EFFECT
|
||||
|
||||
Standard audio effects
|
||||
|
||||
.. data:: EDJE_CHANNEL_BACKGROUND
|
||||
|
||||
Background audio sounds
|
||||
|
||||
.. data:: EDJE_CHANNEL_MUSIC
|
||||
|
||||
Music audio
|
||||
|
||||
.. data:: EDJE_CHANNEL_FOREGROUND
|
||||
|
||||
Foreground audio sounds
|
||||
|
||||
.. data:: EDJE_CHANNEL_INTERFACE
|
||||
|
||||
Sounds related to the interface
|
||||
|
||||
.. data:: EDJE_CHANNEL_INPUT
|
||||
|
||||
Sounds related to regular input
|
||||
|
||||
.. data:: EDJE_CHANNEL_ALERT
|
||||
|
||||
Sounds for major alerts
|
||||
|
||||
.. data:: EDJE_CHANNEL_ALL
|
||||
|
||||
All audio channels (convenience)
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Configuration
|
||||
:parts: 2
|
||||
|
||||
.. autoclass:: Configuration
|
|
@ -0,0 +1,43 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Conformant
|
||||
##########
|
||||
|
||||
.. image:: /images/conformant-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
The aim is to provide a widget that can be used in elementary apps to
|
||||
account for space taken up by the indicator, virtual keypad & softkey
|
||||
windows when running the illume2 module of E17.
|
||||
|
||||
So conformant content will be sized and positioned considering the
|
||||
space required for such stuff, and when they popup, as a keyboard
|
||||
shows when an entry is selected, conformant content won't change.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``virtualkeypad,state,on``: if virtualkeypad state is switched to ``on``.
|
||||
- ``virtualkeypad,state,off``: if virtualkeypad state is switched to ``off``.
|
||||
- ``clipboard,state,on``: if clipboard state is switched to ``on``.
|
||||
- ``clipboard,state,off``: if clipboard state is switched to ``off``.
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``default`` - A content of the conformant
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Conformant
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Conformant
|
|
@ -0,0 +1,84 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Ctxpopup
|
||||
########
|
||||
|
||||
.. image:: /images/ctxpopup-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
A ctxpopup is a widget that, when shown, pops up a list of items. It
|
||||
automatically chooses an area inside its parent object's view to
|
||||
optimally fit into it. In the default theme, it will also point an arrow
|
||||
to it's top left position at the time one shows it. Ctxpopup items have
|
||||
a label and/or an icon. It is intended for a small number of items
|
||||
(hence the use of list, not genlist).
|
||||
|
||||
.. note::
|
||||
|
||||
Ctxpopup is a specialization of :py:class:`~efl.elementary.hover.Hover`.
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``dismissed`` - This is called when 1. the outside of ctxpopup was clicked
|
||||
or 2. its parent area is changed or 3. the language is changed and also when
|
||||
4. the parent object is resized due to the window rotation. Then ctxpopup is
|
||||
dismissed.
|
||||
|
||||
- ``geometry,update`` - The geometry has changed (since 1.17)
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``default`` - A content of the ctxpopup
|
||||
- ``icon`` - An icon in the title area
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - Title label in the title area
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Ctxpopup_Direction:
|
||||
|
||||
Ctxpopup arrow directions
|
||||
-------------------------
|
||||
|
||||
.. data:: ELM_CTXPOPUP_DIRECTION_DOWN
|
||||
|
||||
Arrow is pointing down
|
||||
|
||||
.. data:: ELM_CTXPOPUP_DIRECTION_RIGHT
|
||||
|
||||
Arrow is pointing right
|
||||
|
||||
.. data:: ELM_CTXPOPUP_DIRECTION_LEFT
|
||||
|
||||
Arrow is pointing left
|
||||
|
||||
.. data:: ELM_CTXPOPUP_DIRECTION_UP
|
||||
|
||||
Arrow is pointing up
|
||||
|
||||
.. data:: ELM_CTXPOPUP_DIRECTION_UNKNOWN
|
||||
|
||||
Arrow direction is unknown
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram::
|
||||
Ctxpopup
|
||||
CtxpopupItem
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Ctxpopup
|
||||
.. autoclass:: CtxpopupItem
|
|
@ -0,0 +1,216 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Datetime
|
||||
########
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
Datetime widget is used to display and input date & time values.
|
||||
|
||||
This widget displays date and time as per the **system's locale** settings
|
||||
(Date includes Day, Month & Year along with the defined separators and Time
|
||||
includes Hour, Minute & AM/PM fields). Separator for AM/PM field is ignored.
|
||||
|
||||
The corresponding Month, AM/PM strings are displayed according to the
|
||||
system’s language settings.
|
||||
|
||||
Datetime format is a combination of LIBC standard characters like "%%d %%b
|
||||
%%Y %%I : %%M %%p" which, as a whole represents both Date as well as Time
|
||||
format.
|
||||
|
||||
Elm_datetime supports only the following sub set of libc date format specifiers:
|
||||
|
||||
**%%Y** The year as a decimal number including the century (example: 2011).
|
||||
|
||||
**%%y** The year as a decimal number without a century (range 00 to 99)
|
||||
|
||||
**%%m** The month as a decimal number (range 01 to 12).
|
||||
|
||||
**%%b** The abbreviated month name according to the current locale.
|
||||
|
||||
**%%B** The full month name according to the current locale.
|
||||
|
||||
**%%h** The abbreviated month name according to the current locale(same as %%b).
|
||||
|
||||
**%%d** The day of the month as a decimal number (range 01 to 31).
|
||||
|
||||
**%%e** The day of the month as a decimal number (range 1 to 31). single
|
||||
digits are preceded by a blank.
|
||||
|
||||
**%%I** The hour as a decimal number using a 12-hour clock (range 01 to 12).
|
||||
|
||||
**%%H** The hour as a decimal number using a 24-hour clock (range 00 to 23).
|
||||
|
||||
**%%k** The hour (24-hour clock) as a decimal number (range 0 to 23). single
|
||||
digits are preceded by a blank.
|
||||
|
||||
**%%l** The hour (12-hour clock) as a decimal number (range 1 to 12); single
|
||||
digits are preceded by a blank.
|
||||
|
||||
**%%M** The minute as a decimal number (range 00 to 59).
|
||||
|
||||
**%%p** Either 'AM' or 'PM' according to the given time value, or the
|
||||
corresponding strings for the current locale. Noon is treated as 'PM'
|
||||
and midnight as 'AM'
|
||||
|
||||
**%%P** Like %p but in lower case: 'am' or 'pm' or a corresponding string for
|
||||
the current locale.
|
||||
|
||||
**%%c** The preferred date and time representation for the current locale.
|
||||
|
||||
**%%x** The preferred date representation for the current locale without the time.
|
||||
|
||||
**%%X** The preferred time representation for the current locale without the date.
|
||||
|
||||
**%%r** The complete calendar time using the AM/PM format of the current locale.
|
||||
|
||||
**%%R** The hour and minute in decimal numbers using the format %H:%M.
|
||||
|
||||
**%%T** The time of day in decimal numbers using the format %H:%M:%S.
|
||||
|
||||
**%%D** The date using the format %%m/%%d/%%y.
|
||||
|
||||
**%%F** The date using the format %%Y-%%m-%%d.
|
||||
|
||||
|
||||
(For more reference on the available **LIBC date format specifiers**,
|
||||
please visit the link:
|
||||
http://www.gnu.org/s/hello/manual/libc.html#Formatting-Calendar-Time )
|
||||
|
||||
Datetime widget can provide Unicode **separators** in between its fields
|
||||
except for AM/PM field. A separator can be any **Unicode character**
|
||||
other than the LIBC standard date format specifiers.
|
||||
|
||||
Example: In the format::
|
||||
|
||||
%%b %%d **,** %%y %%H **:** %%M
|
||||
|
||||
comma(,) is separator for date field %%d and colon(:) is separator for
|
||||
hour field %%H.
|
||||
|
||||
The default format is a predefined one, based on the system Locale.
|
||||
|
||||
Hour format 12hr(1-12) or 24hr(0-23) display can be selected by setting
|
||||
the corresponding user format.
|
||||
|
||||
Datetime supports six fields: Year, Month, Date, Hour, Minute, AM/PM.
|
||||
Depending on the Datetime module that is loaded, the user can see
|
||||
different UI to select the individual field values.
|
||||
|
||||
The individual fields of Datetime can be arranged in any order according
|
||||
to the format set by application.
|
||||
|
||||
There is a provision to set the visibility of a particular field as TRUE/
|
||||
FALSE so that **only time/ only date / only required fields** will be
|
||||
displayed.
|
||||
|
||||
Each field is having a default minimum and maximum values just like the
|
||||
daily calendar information. These min/max values can be modified as per
|
||||
the application usage.
|
||||
|
||||
User can enter the values only in between the range of maximum and
|
||||
minimum. Apart from these APIs, there is a provision to display only a
|
||||
limited set of values out of the possible values. APIs to select the
|
||||
individual field limits are intended for this purpose.
|
||||
|
||||
The whole widget is left aligned and its size grows horizontally
|
||||
depending on the current format and each field's visible/disabled state.
|
||||
|
||||
Datetime individual field selection is implemented in a modular style.
|
||||
Module can be implemented as a Ctxpopup based selection or an ISE based
|
||||
selection or even a spinner like selection etc.
|
||||
|
||||
Datetime Module design
|
||||
======================
|
||||
|
||||
The following functions are expected to be implemented in a Datetime module:
|
||||
|
||||
**Field creation**::
|
||||
|
||||
__________ __________
|
||||
| |----- obj_hook() ---------------------->>>| |
|
||||
| |<<<----------------returns Mod_data ------| |
|
||||
| Datetime |_______ | |
|
||||
| widget | |Assign module call backs | Module |
|
||||
| base |<<<____| | |
|
||||
| | | |
|
||||
| |----- field_create() ------------------>>>| |
|
||||
|__________|<<<----------------returns field_obj -----|__________|
|
||||
|
||||
**Field value setting**::
|
||||
|
||||
__________ __________
|
||||
| | | |
|
||||
| Datetime |<<<----------elm_datetime_value_set()---| |
|
||||
| widget | | Module |
|
||||
| base |----display_field_value()------------>>>| |
|
||||
|__________| |__________|
|
||||
|
||||
**del_hook**::
|
||||
|
||||
__________ __________
|
||||
| | | |
|
||||
| Datetime |----obj_unhook()-------------------->>>>| |
|
||||
| widget | | Module |
|
||||
| base | <<<-----frees mod_data---------| |
|
||||
|__________| |__________|
|
||||
|
||||
Any module can use the following shared functions that are implemented in
|
||||
elm_datetime.c:
|
||||
|
||||
**field_format_get()** - gives the field format.
|
||||
|
||||
**field_limit_get()** - gives the field minimum, maximum limits.
|
||||
|
||||
To enable a module, set the ELM_MODULES environment variable as shown:
|
||||
|
||||
**export ELM_MODULES="datetime_input_ctxpopup>datetime/api"**
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``changed`` - whenever Datetime field value is changed, this signal is sent.
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Datetime_Field_Type:
|
||||
|
||||
Datetime fields
|
||||
---------------
|
||||
|
||||
.. data:: ELM_DATETIME_YEAR
|
||||
|
||||
Year
|
||||
|
||||
.. data:: ELM_DATETIME_MONTH
|
||||
|
||||
Month
|
||||
|
||||
.. data:: ELM_DATETIME_DATE
|
||||
|
||||
Date
|
||||
|
||||
.. data:: ELM_DATETIME_HOUR
|
||||
|
||||
Hour
|
||||
|
||||
.. data:: ELM_DATETIME_MINUTE
|
||||
|
||||
Minute
|
||||
|
||||
.. data:: ELM_DATETIME_AMPM
|
||||
|
||||
Am/Pm
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Datetime
|
||||
:parts: 2
|
||||
|
||||
.. autoclass:: Datetime
|
|
@ -0,0 +1,98 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Dayselector
|
||||
###########
|
||||
|
||||
.. image:: /images/dayselector-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
Dayselector displays all seven days of the week and allows the user to
|
||||
select multiple days.
|
||||
|
||||
The selection can be toggle by just clicking on the day.
|
||||
|
||||
Dayselector also provides the functionality to check whether a day is
|
||||
selected or not.
|
||||
|
||||
First day of the week is taken from config settings by default. It can be
|
||||
altered by using the API :py:attr:`~Dayselector.week_start` API.
|
||||
|
||||
APIs are provided for setting the duration of weekend
|
||||
:py:attr:`~Dayselector.weekend_start` and :py:attr:`~Dayselector.weekend_length`
|
||||
does this job.
|
||||
|
||||
Two styles of weekdays and weekends are supported in Dayselector.
|
||||
Application can emit signals on individual check objects for setting the
|
||||
weekday, weekend styles.
|
||||
|
||||
Once the weekend start day or weekend length changes, all the weekday &
|
||||
weekend styles will be reset to default style. It's the application's
|
||||
responsibility to set the styles again by sending corresponding signals.
|
||||
|
||||
"day0" indicates Sunday, "day1" indicates Monday etc. continues and so,
|
||||
"day6" indicates the Saturday part name.
|
||||
|
||||
Application can change individual day display string by using the API
|
||||
:py:meth:`~efl.elementary.object.Object.part_text_set`.
|
||||
|
||||
:py:meth:`~efl.elementary.object.Object.part_content_set` API sets the
|
||||
individual day object only if the passed one is a Check widget.
|
||||
|
||||
Check object representing a day can be set/get by the application by using
|
||||
the elm_object_part_content_set/get APIs thus providing a way to handle
|
||||
the different check styles for individual days.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``dayselector,changed`` - when the user changes the state of a day.
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Dayselector_Day:
|
||||
|
||||
Dayselector days
|
||||
----------------
|
||||
|
||||
.. data:: ELM_DAYSELECTOR_SUN
|
||||
|
||||
Sunday
|
||||
|
||||
.. data:: ELM_DAYSELECTOR_MON
|
||||
|
||||
Monday
|
||||
|
||||
.. data:: ELM_DAYSELECTOR_TUE
|
||||
|
||||
Tuesday
|
||||
|
||||
.. data:: ELM_DAYSELECTOR_WED
|
||||
|
||||
Wednesday
|
||||
|
||||
.. data:: ELM_DAYSELECTOR_THU
|
||||
|
||||
Thursday
|
||||
|
||||
.. data:: ELM_DAYSELECTOR_FRI
|
||||
|
||||
Friday
|
||||
|
||||
.. data:: ELM_DAYSELECTOR_SAT
|
||||
|
||||
Saturday
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Dayselector
|
||||
:parts: 2
|
||||
|
||||
.. autoclass:: Dayselector
|
|
@ -0,0 +1,70 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Diskselector
|
||||
############
|
||||
|
||||
.. image:: /images/diskselector-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
A diskselector is a kind of list widget. It scrolls horizontally,
|
||||
and can contain label and icon objects. Three items are displayed
|
||||
with the selected one in the middle.
|
||||
|
||||
It can act like a circular list with round mode and labels can be
|
||||
reduced for a defined length for side items.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``selected`` - when item is selected, i.e. scroller stops.
|
||||
- ``clicked`` - This is called when a user clicks an item
|
||||
- ``scroll,anim,start`` - scrolling animation has started
|
||||
- ``scroll,anim,stop`` - scrolling animation has stopped
|
||||
- ``scroll,drag,start`` - dragging the diskselector has started
|
||||
- ``scroll,drag,stop`` - dragging the diskselector has stopped
|
||||
|
||||
.. note:: The ``scroll,anim,*`` and ``scroll,drag,*`` signals are only emitted
|
||||
by user intervention.
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``icon`` - An icon in the diskselector item
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - Label of the diskselector item
|
||||
|
||||
|
||||
Scrollable Interface
|
||||
====================
|
||||
|
||||
This widget supports the scrollable interface.
|
||||
|
||||
If you wish to control the scrolling behaviour using these functions,
|
||||
inherit both the widget class and the
|
||||
:py:class:`~efl.elementary.scroller.Scrollable` class
|
||||
using multiple inheritance, for example::
|
||||
|
||||
class ScrollableGenlist(Genlist, Scrollable):
|
||||
def __init__(self, canvas, *args, **kwargs):
|
||||
Genlist.__init__(self, canvas)
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram::
|
||||
Diskselector
|
||||
DiskselectorItem
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Diskselector
|
||||
.. autoclass:: DiskselectorItem
|
|
@ -1,15 +1,22 @@
|
|||
.. py:module:: efl.elementary
|
||||
.. module:: efl.elementary
|
||||
|
||||
:mod:`efl.elementary` Package
|
||||
=============================
|
||||
What is elementary?
|
||||
*******************
|
||||
|
||||
Elementary is a the high level toolkit based on the underlying efl
|
||||
technologies (:doc:`Evas </evas/evas>`, :doc:`Edje </edje/edje>`,
|
||||
:doc:`Ecore </ecore/ecore>`, etc...). It provide all the
|
||||
widget you need to build a full application.
|
||||
|
||||
It is meant to make the programmers work almost brainless but give them lots
|
||||
of flexibility.
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
Callbacks
|
||||
^^^^^^^^^
|
||||
*********
|
||||
|
||||
.. rubric:: Widget callbacks
|
||||
Widget callbacks
|
||||
================
|
||||
|
||||
Widget callbacks are set with callback_*_add methods which take a callable,
|
||||
and optional args, kwargs as data.
|
||||
|
@ -22,182 +29,452 @@ or::
|
|||
|
||||
obj, event_info, *args, **kwargs
|
||||
|
||||
.. rubric:: Event callbacks
|
||||
|
||||
Event callbacks
|
||||
===============
|
||||
|
||||
Event callbacks have signature of::
|
||||
|
||||
object, source_object, event_type, event_info, *args, **kwargs
|
||||
|
||||
|
||||
A sample Python Elementary program
|
||||
----------------------------------
|
||||
**********************************
|
||||
|
||||
.. literalinclude:: ../../examples/elementary/test_panel.py
|
||||
:lines: 4-50
|
||||
|
||||
What is Elementary?
|
||||
-------------------
|
||||
|
||||
Elementary is a VERY SIMPLE toolkit. It is not meant for writing extensive desktop
|
||||
applications (yet). Small simple ones with simple needs.
|
||||
|
||||
It is meant to make the programmers work almost brainless but give them lots
|
||||
of flexibility.
|
||||
.. literalinclude:: ../../examples/elementary/test_win_dialog.py
|
||||
:language: python
|
||||
|
||||
|
||||
Reference
|
||||
---------
|
||||
API Reference
|
||||
*************
|
||||
|
||||
Package
|
||||
^^^^^^^
|
||||
|
||||
Everything in the modules :py:mod:`~efl.elementary.general` and
|
||||
:py:mod:`~efl.elementary.need` is also available at package level.
|
||||
Enumerations
|
||||
============
|
||||
|
||||
Modules
|
||||
^^^^^^^
|
||||
.. _Elm_Object_Layer:
|
||||
|
||||
Object layers
|
||||
-------------
|
||||
|
||||
.. versionadded:: 1.14
|
||||
|
||||
.. data:: ELM_OBJECT_LAYER_BACKGROUND
|
||||
|
||||
where to place backgrounds
|
||||
|
||||
.. data:: ELM_OBJECT_LAYER_DEFAULT
|
||||
|
||||
Evas_Object default layer (and thus for Elementary)
|
||||
|
||||
.. data:: ELM_OBJECT_LAYER_FOCUS
|
||||
|
||||
where focus object visualization is
|
||||
|
||||
.. data:: ELM_OBJECT_LAYER_TOOLTIP
|
||||
|
||||
where to show tooltips
|
||||
|
||||
.. data:: ELM_OBJECT_LAYER_CURSOR
|
||||
|
||||
where to show cursors
|
||||
|
||||
.. data:: ELM_OBJECT_LAYER_LAST
|
||||
|
||||
last layer known by Elementary
|
||||
|
||||
|
||||
.. _Elm_Policy:
|
||||
|
||||
Policy types
|
||||
------------
|
||||
|
||||
.. data:: ELM_POLICY_QUIT
|
||||
|
||||
Under which circumstances the application should quit automatically.
|
||||
|
||||
.. data:: ELM_POLICY_EXIT
|
||||
|
||||
Defines elm_exit() behaviour. (since 1.8)
|
||||
|
||||
.. data:: ELM_POLICY_THROTTLE
|
||||
|
||||
Defines how throttling should work (since 1.8)
|
||||
|
||||
|
||||
.. _Elm_Policy_Quit:
|
||||
|
||||
Quit policy types
|
||||
-----------------
|
||||
|
||||
.. data:: ELM_POLICY_QUIT_NONE
|
||||
|
||||
Never quit the application automatically
|
||||
|
||||
.. data:: ELM_POLICY_QUIT_LAST_WINDOW_CLOSED
|
||||
|
||||
Quit when the application's last window is closed
|
||||
|
||||
.. data:: ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN
|
||||
|
||||
Quit when the application's last window is hidden
|
||||
|
||||
.. versionadded:: 1.15
|
||||
|
||||
|
||||
.. _Elm_Policy_Exit:
|
||||
|
||||
Exit policy types
|
||||
-----------------
|
||||
|
||||
Possible values for the ELM_POLICY_EXIT policy.
|
||||
|
||||
.. data:: ELM_POLICY_EXIT_NONE
|
||||
|
||||
Just quit the main loop on exit().
|
||||
|
||||
.. data:: ELM_POLICY_EXIT_WINDOWS_DEL
|
||||
|
||||
Delete all the windows after quitting the main loop.
|
||||
|
||||
|
||||
.. _Elm_Policy_Throttle:
|
||||
|
||||
Throttle policy types
|
||||
---------------------
|
||||
|
||||
Possible values for the #ELM_POLICY_THROTTLE policy.
|
||||
|
||||
.. data:: ELM_POLICY_THROTTLE_CONFIG
|
||||
|
||||
Do whatever elementary config is configured to do.
|
||||
|
||||
.. data:: ELM_POLICY_THROTTLE_HIDDEN_ALWAYS
|
||||
|
||||
Always throttle when all windows are no longer visible.
|
||||
|
||||
.. data:: ELM_POLICY_THROTTLE_NEVER
|
||||
|
||||
Never throttle when windows are all hidden, regardless of config settings.
|
||||
|
||||
|
||||
.. _Elm_Object_Multi_Select_Mode:
|
||||
|
||||
Object multi select policy values
|
||||
---------------------------------
|
||||
|
||||
Possible values for the #ELM_OBJECT_MULTI_SELECT_MODE policy.
|
||||
|
||||
.. versionadded:: 1.18
|
||||
|
||||
.. data:: ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT
|
||||
|
||||
Default multiple select mode.
|
||||
|
||||
.. data:: ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL
|
||||
|
||||
Disallow mutiple selection when clicked without control key pressed.
|
||||
|
||||
|
||||
.. _Elm_Process_State:
|
||||
|
||||
Elm_Process_State
|
||||
-----------------
|
||||
|
||||
.. data:: ELM_PROCESS_STATE_FOREGROUND
|
||||
|
||||
The process is in a foreground/active/running state - work as normal.
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
.. data:: ELM_PROCESS_STATE_BACKGROUND
|
||||
|
||||
The process is in the bacgkround, so you may want to stop animating,
|
||||
fetching data as often etc.
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
|
||||
.. _Elm_Sys_Notify_Closed_Reason:
|
||||
|
||||
Notify close reasons
|
||||
--------------------
|
||||
|
||||
The reason the notification was closed
|
||||
|
||||
.. data:: ELM_SYS_NOTIFY_CLOSED_EXPIRED
|
||||
|
||||
The notification expired.
|
||||
|
||||
.. versionadded:: 1.10
|
||||
|
||||
.. data:: ELM_SYS_NOTIFY_CLOSED_DISMISSED
|
||||
|
||||
The notification was dismissed by the user.
|
||||
|
||||
.. versionadded:: 1.10
|
||||
|
||||
.. data:: ELM_SYS_NOTIFY_CLOSED_REQUESTED
|
||||
|
||||
The notification was closed by a call to CloseNotification method.
|
||||
|
||||
.. versionadded:: 1.10
|
||||
|
||||
.. data:: ELM_SYS_NOTIFY_CLOSED_UNDEFINED
|
||||
|
||||
Undefined/reserved reasons.
|
||||
|
||||
.. versionadded:: 1.10
|
||||
|
||||
|
||||
.. _Elm_Sys_Notify_Urgency:
|
||||
|
||||
Notify urgency levels
|
||||
---------------------
|
||||
|
||||
Urgency levels of a notification
|
||||
|
||||
:see: :py:func:`sys_notify_send`
|
||||
|
||||
.. data:: ELM_SYS_NOTIFY_URGENCY_LOW
|
||||
|
||||
Low
|
||||
|
||||
.. versionadded:: 1.10
|
||||
|
||||
.. data:: ELM_SYS_NOTIFY_URGENCY_NORMAL
|
||||
|
||||
Normal
|
||||
|
||||
.. versionadded:: 1.10
|
||||
|
||||
.. data:: ELM_SYS_NOTIFY_URGENCY_CRITICAL
|
||||
|
||||
Critical
|
||||
|
||||
.. versionadded:: 1.10
|
||||
|
||||
|
||||
.. _Elm_Glob_Match_Flags:
|
||||
|
||||
Glob matching
|
||||
-------------
|
||||
|
||||
Glob matching bitfiled flags
|
||||
|
||||
.. data:: ELM_GLOB_MATCH_NO_ESCAPE
|
||||
|
||||
Treat backslash as an ordinary character instead of escape.
|
||||
|
||||
.. versionadded:: 1.11
|
||||
|
||||
.. data:: ELM_GLOB_MATCH_PATH
|
||||
|
||||
Match a slash in string only with a slash in pattern and not by an
|
||||
asterisk (*) or a question mark (?) metacharacter, nor by a bracket
|
||||
expression ([]) containing a slash.
|
||||
|
||||
.. versionadded:: 1.11
|
||||
|
||||
.. data:: ELM_GLOB_MATCH_PERIOD
|
||||
|
||||
Leading period in string has to be matched exactly by a period in
|
||||
pattern. A period is considered to be leading if it is the first
|
||||
character in string, or if both ELM_GLOB_MATCH_PATH is set and the
|
||||
period immediately follows a slash.
|
||||
|
||||
.. versionadded:: 1.11
|
||||
|
||||
.. data:: ELM_GLOB_MATCH_NOCASE
|
||||
|
||||
The pattern is matched case-insensitively.
|
||||
|
||||
.. versionadded:: 1.11
|
||||
|
||||
|
||||
.. _General:
|
||||
|
||||
General
|
||||
=======
|
||||
|
||||
General Elementary API. Functions that don't relate to
|
||||
Elementary objects specifically.
|
||||
|
||||
Here are documented functions which init/shutdown the library,
|
||||
that apply to generic Elementary objects, that deal with
|
||||
configuration, et cetera.
|
||||
|
||||
.. autoclass:: EthumbConnect
|
||||
.. autoclass:: ConfigAllChanged
|
||||
.. autoclass:: PolicyChanged
|
||||
.. autoclass:: ProcessBackground
|
||||
.. autoclass:: ProcessForeground
|
||||
|
||||
.. autofunction:: on_ethumb_connect
|
||||
.. autofunction:: on_config_all_changed
|
||||
.. autofunction:: on_policy_changed
|
||||
.. autofunction:: on_process_background
|
||||
.. autofunction:: on_process_foreground
|
||||
|
||||
.. autofunction:: init
|
||||
.. autofunction:: shutdown
|
||||
.. autofunction:: run
|
||||
.. autofunction:: exit
|
||||
|
||||
.. autofunction:: policy_set
|
||||
.. autofunction:: policy_get
|
||||
.. autofunction:: language_set
|
||||
.. autofunction:: process_state_get
|
||||
|
||||
|
||||
.. _Fingers:
|
||||
|
||||
Fingers
|
||||
=======
|
||||
|
||||
Elementary is designed to be finger-friendly for touchscreens,
|
||||
and so in addition to scaling for display resolution, it can
|
||||
also scale based on finger "resolution" (or size). You can then
|
||||
customize the granularity of the areas meant to receive clicks
|
||||
on touchscreens.
|
||||
|
||||
Different profiles may have pre-set values for finger sizes.
|
||||
|
||||
.. autofunction:: coords_finger_size_adjust
|
||||
|
||||
|
||||
.. _Caches:
|
||||
|
||||
Caches
|
||||
======
|
||||
|
||||
These are functions which let one fine-tune some cache values for
|
||||
Elementary applications, thus allowing for performance adjustments.
|
||||
|
||||
.. autofunction:: cache_all_flush
|
||||
|
||||
|
||||
.. _Fonts:
|
||||
|
||||
Fonts
|
||||
=====
|
||||
|
||||
These are functions dealing with font rendering, selection and the
|
||||
like for Elementary applications. One might fetch which system
|
||||
fonts are there to use and set custom fonts for individual classes
|
||||
of UI items containing text (text classes).
|
||||
|
||||
.. autofunction:: font_properties_get
|
||||
.. autofunction:: font_properties_free
|
||||
|
||||
.. autofunction:: font_fontconfig_name_get
|
||||
|
||||
.. autoclass:: FontProperties
|
||||
|
||||
|
||||
.. _Debug:
|
||||
|
||||
Debug
|
||||
=====
|
||||
|
||||
Don't use them unless you are sure.
|
||||
|
||||
.. autofunction:: object_tree_dump
|
||||
.. autofunction:: object_tree_dot_dump
|
||||
|
||||
|
||||
.. _Sys_Notify:
|
||||
|
||||
Sys Notify
|
||||
==========
|
||||
|
||||
.. autofunction:: sys_notify_close
|
||||
.. autofunction:: sys_notify_send
|
||||
|
||||
.. autofunction:: on_sys_notify_notification_closed
|
||||
.. autofunction:: on_sys_notify_action_invoked
|
||||
|
||||
.. autoclass:: SysNotifyNotificationClosed
|
||||
.. autoclass:: SysNotifyActionInvoked
|
||||
|
||||
|
||||
Widgets
|
||||
=======
|
||||
|
||||
.. toctree:: *
|
||||
:glob:
|
||||
:maxdepth: 1
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 4
|
||||
|
||||
module-actionslider
|
||||
module-background
|
||||
module-box
|
||||
module-bubble
|
||||
module-button
|
||||
module-calendar
|
||||
module-check
|
||||
module-clock
|
||||
module-colorselector
|
||||
module-configuration
|
||||
module-conformant
|
||||
module-ctxpopup
|
||||
module-datetime
|
||||
module-dayselector
|
||||
module-diskselector
|
||||
module-entry
|
||||
module-fileselector
|
||||
module-fileselector_button
|
||||
module-fileselector_entry
|
||||
module-flip
|
||||
module-flipselector
|
||||
module-frame
|
||||
module-general
|
||||
module-gengrid
|
||||
module-genlist
|
||||
module-gesture_layer
|
||||
module-grid
|
||||
module-hover
|
||||
module-hoversel
|
||||
module-icon
|
||||
module-image
|
||||
module-index
|
||||
module-innerwindow
|
||||
module-label
|
||||
module-layout
|
||||
module-layout_class
|
||||
module-list
|
||||
module-map
|
||||
module-mapbuf
|
||||
module-menu
|
||||
module-multibuttonentry
|
||||
module-naviframe
|
||||
module-need
|
||||
module-notify
|
||||
module-object
|
||||
module-object_item
|
||||
module-panel
|
||||
module-panes
|
||||
module-photo
|
||||
module-photocam
|
||||
module-plug
|
||||
module-popup
|
||||
module-progressbar
|
||||
module-radio
|
||||
module-scroller
|
||||
module-segment_control
|
||||
module-separator
|
||||
module-slider
|
||||
module-slideshow
|
||||
module-spinner
|
||||
module-table
|
||||
module-theme
|
||||
module-thumb
|
||||
module-toolbar
|
||||
module-transit
|
||||
module-video
|
||||
module-web
|
||||
module-window
|
||||
|
||||
Inheritance diagram
|
||||
-------------------
|
||||
===================
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.actionslider
|
||||
efl.elementary.background
|
||||
efl.elementary.box
|
||||
efl.elementary.bubble
|
||||
efl.elementary.button
|
||||
efl.elementary.calendar_elm
|
||||
efl.elementary.check
|
||||
efl.elementary.clock
|
||||
efl.elementary.colorselector
|
||||
efl.elementary.configuration
|
||||
efl.elementary.conformant
|
||||
efl.elementary.ctxpopup
|
||||
efl.elementary.datetime_elm
|
||||
efl.elementary.dayselector
|
||||
efl.elementary.diskselector
|
||||
efl.elementary.entry
|
||||
efl.elementary.fileselector
|
||||
efl.elementary.fileselector_button
|
||||
efl.elementary.fileselector_entry
|
||||
efl.elementary.flip
|
||||
efl.elementary.flipselector
|
||||
efl.elementary.frame
|
||||
efl.elementary.general
|
||||
efl.elementary.gengrid
|
||||
efl.elementary.genlist
|
||||
efl.elementary.gesture_layer
|
||||
efl.elementary.grid
|
||||
efl.elementary.hover
|
||||
efl.elementary.hoversel
|
||||
efl.elementary.icon
|
||||
efl.elementary.image
|
||||
efl.elementary.index
|
||||
efl.elementary.innerwindow
|
||||
efl.elementary.label
|
||||
efl.elementary.layout
|
||||
efl.elementary.layout_class
|
||||
efl.elementary.list
|
||||
efl.elementary.map
|
||||
efl.elementary.mapbuf
|
||||
efl.elementary.menu
|
||||
efl.elementary.multibuttonentry
|
||||
efl.elementary.naviframe
|
||||
efl.elementary.need
|
||||
efl.elementary.notify
|
||||
efl.elementary.object
|
||||
efl.elementary.object_item
|
||||
efl.elementary.panel
|
||||
efl.elementary.panes
|
||||
efl.elementary.photo
|
||||
efl.elementary.photocam
|
||||
efl.elementary.plug
|
||||
efl.elementary.popup
|
||||
efl.elementary.progressbar
|
||||
efl.elementary.radio
|
||||
efl.elementary.scroller
|
||||
efl.elementary.segment_control
|
||||
efl.elementary.separator
|
||||
efl.elementary.slider
|
||||
efl.elementary.slideshow
|
||||
efl.elementary.spinner
|
||||
efl.elementary.table
|
||||
efl.elementary.theme
|
||||
efl.elementary.thumb
|
||||
efl.elementary.toolbar
|
||||
efl.elementary.transit
|
||||
efl.elementary.video
|
||||
efl.elementary.web
|
||||
efl.elementary.window
|
||||
:parts: 2
|
||||
efl.elementary.Actionslider
|
||||
efl.elementary.Background
|
||||
efl.elementary.Box
|
||||
efl.elementary.Bubble
|
||||
efl.elementary.Button
|
||||
efl.elementary.Calendar
|
||||
efl.elementary.Check
|
||||
efl.elementary.Clock
|
||||
efl.elementary.Colorselector
|
||||
efl.elementary.Combobox
|
||||
efl.elementary.Configuration
|
||||
efl.elementary.Conformant
|
||||
efl.elementary.Ctxpopup
|
||||
efl.elementary.Datetime
|
||||
efl.elementary.Dayselector
|
||||
efl.elementary.Diskselector
|
||||
efl.elementary.Entry
|
||||
efl.elementary.Fileselector
|
||||
efl.elementary.FileselectorButton
|
||||
efl.elementary.FileselectorEntry
|
||||
efl.elementary.Flip
|
||||
efl.elementary.FlipSelector
|
||||
efl.elementary.Frame
|
||||
efl.elementary.Gengrid
|
||||
efl.elementary.Genlist
|
||||
efl.elementary.GestureLayer
|
||||
efl.elementary.Grid
|
||||
efl.elementary.Hover
|
||||
efl.elementary.Hoversel
|
||||
efl.elementary.Icon
|
||||
efl.elementary.Image
|
||||
efl.elementary.Index
|
||||
efl.elementary.InnerWindow
|
||||
efl.elementary.Label
|
||||
efl.elementary.Layout
|
||||
efl.elementary.List
|
||||
efl.elementary.Map
|
||||
efl.elementary.Mapbuf
|
||||
efl.elementary.Menu
|
||||
efl.elementary.MultiButtonEntry
|
||||
efl.elementary.Naviframe
|
||||
efl.elementary.Notify
|
||||
efl.elementary.Object
|
||||
efl.elementary.ObjectItem
|
||||
efl.elementary.Panel
|
||||
efl.elementary.Panes
|
||||
efl.elementary.Photo
|
||||
efl.elementary.Photocam
|
||||
efl.elementary.Plug
|
||||
efl.elementary.Popup
|
||||
efl.elementary.Progressbar
|
||||
efl.elementary.Radio
|
||||
efl.elementary.Scroller
|
||||
efl.elementary.SegmentControl
|
||||
efl.elementary.Separator
|
||||
efl.elementary.Slider
|
||||
efl.elementary.Slideshow
|
||||
efl.elementary.Spinner
|
||||
efl.elementary.Table
|
||||
efl.elementary.Theme
|
||||
efl.elementary.Thumb
|
||||
efl.elementary.Toolbar
|
||||
efl.elementary.Transit
|
||||
efl.elementary.Video
|
||||
efl.elementary.Web
|
||||
efl.elementary.Window
|
||||
:parts: 1
|
||||
|
|
|
@ -0,0 +1,584 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Entry
|
||||
#####
|
||||
|
||||
.. image:: /images/entry-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
An entry is a convenience widget which shows a box that the user can
|
||||
enter text into.
|
||||
|
||||
Entries by default don't scroll, so they grow to accommodate the entire text,
|
||||
resizing the parent window as needed. This can be changed with the property
|
||||
:py:attr:`~efl.elementary.entry.Entry.scrollable`.
|
||||
|
||||
They can also be single line or multi line (the default) and when set
|
||||
to multi line mode they support text wrapping in any of the modes
|
||||
indicated by :ref:`Elm_Wrap_Type`.
|
||||
|
||||
Other features include password mode, filtering of inserted text with
|
||||
:py:meth:`~efl.elementary.entry.Entry.markup_filter_append` and related
|
||||
functions, inline "items" and formatted markup text.
|
||||
|
||||
|
||||
Scrollable Interface
|
||||
====================
|
||||
|
||||
This widget supports the scrollable interface.
|
||||
|
||||
If you wish to control the scolling behaviour using these functions,
|
||||
inherit both the widget class and the
|
||||
:py:class:`~efl.elementary.scroller.Scrollable` class
|
||||
using multiple inheritance, for example::
|
||||
|
||||
class ScrollableGenlist(Genlist, Scrollable):
|
||||
def __init__(self, canvas, *args, **kwargs):
|
||||
Genlist.__init__(self, canvas)
|
||||
|
||||
|
||||
Formatted text
|
||||
==============
|
||||
|
||||
The markup tags supported by the Entry are defined by the theme, but
|
||||
even when writing new themes or extensions it's a good idea to stick to
|
||||
a sane default, to maintain coherency and avoid application breakages.
|
||||
Currently defined by the default theme are the following tags:
|
||||
|
||||
``<br>``
|
||||
Inserts a line break.
|
||||
``<ps>``
|
||||
Inserts a paragraph separator. This is preferred over line
|
||||
breaks.
|
||||
``<tab>``
|
||||
Inserts a tab.
|
||||
``<em>...</em>``
|
||||
Emphasis. Sets the *oblique* style for the
|
||||
enclosed text.
|
||||
``<b>...</b>``
|
||||
Sets the **bold** style for the enclosed text.
|
||||
``<link>...</link>``
|
||||
Underlines the enclosed text.
|
||||
``<hilight>...</hilight>``
|
||||
Highlights the enclosed text.
|
||||
|
||||
|
||||
Special markups
|
||||
===============
|
||||
|
||||
Besides those used to format text, entries support two special markup
|
||||
tags used to insert click-able portions of text or items inlined within
|
||||
the text.
|
||||
|
||||
|
||||
Anchors
|
||||
-------
|
||||
|
||||
Anchors are similar to HTML anchors. Text can be surrounded by <a> and
|
||||
</a> tags and an event will be generated when this text is clicked,
|
||||
like this::
|
||||
|
||||
This text is outside <a href=anc-01>but this one is an anchor</a>
|
||||
|
||||
The ``href`` attribute in the opening tag gives the name that will be
|
||||
used to identify the anchor and it can be any valid utf8 string.
|
||||
|
||||
When an anchor is clicked, an ``"anchor,clicked"`` signal is emitted with
|
||||
an :py:class:`EntryAnchorInfo` in the ``event_info`` parameter for the
|
||||
callback function. The same applies for ``anchor,in`` (mouse in),
|
||||
``anchor,out`` (mouse out), ``anchor,down`` (mouse down), and ``anchor,up``
|
||||
(mouse up) events on an anchor.
|
||||
|
||||
|
||||
Items
|
||||
-----
|
||||
|
||||
Inlined in the text, any other :py:class:`~efl.elementary.object.Object` can
|
||||
be inserted by using ``<item>`` tags this way::
|
||||
|
||||
<item size=16x16 vsize=full href=emoticon/haha></item>
|
||||
|
||||
Just like with anchors, the ``href`` identifies each item, but these need,
|
||||
in addition, to indicate their size, which is done using any one of
|
||||
``size``, ``absize`` or ``relsize`` attributes. These attributes take their
|
||||
value in the WxH format, where W is the width and H the height of the
|
||||
item.
|
||||
|
||||
- absize: Absolute pixel size for the item. Whatever value is set will
|
||||
be the item's size regardless of any scale value the object may have
|
||||
been set to. The final line height will be adjusted to fit larger items.
|
||||
- size: Similar to *absize*, but it's adjusted to the scale value set
|
||||
for the object.
|
||||
- relsize: Size is adjusted for the item to fit within the current
|
||||
line height.
|
||||
|
||||
Besides their size, items are specified a ``vsize`` value that affects
|
||||
how their final size and position are calculated. The possible values
|
||||
are:
|
||||
|
||||
- ``ascent``: Item will be placed within the line's baseline and its
|
||||
ascent. That is, the height between the line where all characters are
|
||||
positioned and the highest point in the line. For ``size`` and
|
||||
``absize`` items, the descent value will be added to the total line
|
||||
height to make them fit. ``relsize`` items will be adjusted to fit
|
||||
within this space.
|
||||
- ``full``: Items will be placed between the descent and ascent, or the
|
||||
lowest point in the line and its highest.
|
||||
|
||||
After the size for an item is calculated, the entry will request an object to
|
||||
place in its space. For this, the functions set with
|
||||
:py:meth:`~efl.elementary.entry.Entry.item_provider_append` and related
|
||||
functions will be called in order until one of them returns a non-*None* value.
|
||||
If no providers are available, or all of them return *None*, then the entry
|
||||
falls back to one of the internal defaults, provided the name matches with one
|
||||
of them.
|
||||
|
||||
All of the following are currently supported:
|
||||
|
||||
- emoticon/angry
|
||||
- emoticon/angry-shout
|
||||
- emoticon/crazy-laugh
|
||||
- emoticon/evil-laugh
|
||||
- emoticon/evil
|
||||
- emoticon/goggle-smile
|
||||
- emoticon/grumpy
|
||||
- emoticon/grumpy-smile
|
||||
- emoticon/guilty
|
||||
- emoticon/guilty-smile
|
||||
- emoticon/haha
|
||||
- emoticon/half-smile
|
||||
- emoticon/happy-panting
|
||||
- emoticon/happy
|
||||
- emoticon/indifferent
|
||||
- emoticon/kiss
|
||||
- emoticon/knowing-grin
|
||||
- emoticon/laugh
|
||||
- emoticon/little-bit-sorry
|
||||
- emoticon/love-lots
|
||||
- emoticon/love
|
||||
- emoticon/minimal-smile
|
||||
- emoticon/not-happy
|
||||
- emoticon/not-impressed
|
||||
- emoticon/omg
|
||||
- emoticon/opensmile
|
||||
- emoticon/smile
|
||||
- emoticon/sorry
|
||||
- emoticon/squint-laugh
|
||||
- emoticon/surprised
|
||||
- emoticon/suspicious
|
||||
- emoticon/tongue-dangling
|
||||
- emoticon/tongue-poke
|
||||
- emoticon/uh
|
||||
- emoticon/unhappy
|
||||
- emoticon/very-sorry
|
||||
- emoticon/what
|
||||
- emoticon/wink
|
||||
- emoticon/worried
|
||||
- emoticon/wtf
|
||||
|
||||
Alternatively, an item may reference an image by its path, using
|
||||
the URI form ``file:///path/to/an/image.png`` and the entry will then
|
||||
use that image for the item.
|
||||
|
||||
|
||||
Setting entry's style
|
||||
=====================
|
||||
|
||||
There are 2 major ways to change the entry's style:
|
||||
|
||||
- Theme - set the "base" field to the desired style.
|
||||
- User style - Pushing overrides to the theme style to the textblock object
|
||||
by using :py:meth:`~efl.elementary.entry.Entry.text_style_user_push`.
|
||||
|
||||
You should modify the theme when you would like to change the style for
|
||||
aesthetic reasons. While the user style should be changed when you would
|
||||
like to change the style to something specific defined at run-time, e.g,
|
||||
setting font or font size in a text editor.
|
||||
|
||||
|
||||
Loading and saving files
|
||||
========================
|
||||
|
||||
Entries have convenience functions to load text from a file and save changes
|
||||
back to it after a short delay. The automatic saving is enabled by default, but
|
||||
can be disabled with :py:attr:`~efl.elementary.entry.Entry.autosave` and files
|
||||
can be loaded directly as plain text or have any markup in them recognized. See
|
||||
:py:attr:`~efl.elementary.entry.Entry.file` for more details.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``changed``: The text within the entry was changed.
|
||||
- ``changed,user``: The text within the entry was changed because of user
|
||||
interaction.
|
||||
- ``activated``: The enter key was pressed on a single line entry.
|
||||
- ``aborted``: The escape key was pressed on a single line entry. (since 1.7)
|
||||
- ``press``: A mouse button has been pressed on the entry.
|
||||
- ``longpressed``: A mouse button has been pressed and held for a couple
|
||||
seconds.
|
||||
- ``clicked``: The entry has been clicked (mouse press and release).
|
||||
- ``clicked,double``: The entry has been double clicked.
|
||||
- ``clicked,triple``: The entry has been triple clicked.
|
||||
- ``selection,paste``: A paste of the clipboard contents was requested.
|
||||
- ``selection,copy``: A copy of the selected text into the clipboard was
|
||||
requested.
|
||||
- ``selection,cut``: A cut of the selected text into the clipboard was
|
||||
requested.
|
||||
- ``selection,start``: A selection has begun and no previous selection
|
||||
existed.
|
||||
- ``selection,changed``: The current selection has changed.
|
||||
- ``selection,cleared``: The current selection has been cleared.
|
||||
- ``cursor,changed``: The cursor has changed position.
|
||||
- ``anchor,clicked``: An anchor has been clicked. The event_info
|
||||
parameter for the callback will be an :py:class:`EntryAnchorInfo`.
|
||||
- ``anchor,in``: Mouse cursor has moved into an anchor. The event_info
|
||||
parameter for the callback will be an :py:class:`EntryAnchorInfo`.
|
||||
- ``anchor,out``: Mouse cursor has moved out of an anchor. The event_info
|
||||
parameter for the callback will be an :py:class:`EntryAnchorInfo`.
|
||||
- ``anchor,up``: Mouse button has been unpressed on an anchor. The event_info
|
||||
parameter for the callback will be an :py:class:`EntryAnchorInfo`.
|
||||
- ``anchor,down``: Mouse button has been pressed on an anchor. The event_info
|
||||
parameter for the callback will be an :py:class:`EntryAnchorInfo`.
|
||||
- ``preedit,changed``: The preedit string has changed.
|
||||
- ``text,set,done``: Whole text has been set to the entry.
|
||||
- ``rejected``: .Called when some of inputs are rejected by the filter. (since 1.9)
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``icon`` - An icon in the entry
|
||||
- ``end`` - A content in the end of the entry
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - text of the entry
|
||||
- ``guide`` - placeholder of the entry
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Entry_Autocapital_Type:
|
||||
|
||||
Autocapitalization types
|
||||
------------------------
|
||||
|
||||
.. data:: ELM_AUTOCAPITAL_TYPE_NONE
|
||||
|
||||
No auto-capitalization when typing
|
||||
|
||||
.. data:: ELM_AUTOCAPITAL_TYPE_WORD
|
||||
|
||||
Autocapitalize each word typed
|
||||
|
||||
.. data:: ELM_AUTOCAPITAL_TYPE_SENTENCE
|
||||
|
||||
Autocapitalize the start of each sentence
|
||||
|
||||
.. data:: ELM_AUTOCAPITAL_TYPE_ALLCHARACTER
|
||||
|
||||
Autocapitalize all letters
|
||||
|
||||
|
||||
.. _Elm_Entry_Cnp_Mode:
|
||||
|
||||
Copy & paste modes
|
||||
------------------
|
||||
|
||||
.. data:: ELM_CNP_MODE_MARKUP
|
||||
|
||||
Copy & paste text with markup tags
|
||||
|
||||
.. data:: ELM_CNP_MODE_NO_IMAGE
|
||||
|
||||
Copy & paste text without item (image) tags
|
||||
|
||||
.. data:: ELM_CNP_MODE_PLAINTEXT
|
||||
|
||||
Copy & paste text without markup tags
|
||||
|
||||
|
||||
.. _Elm_Input_Hints:
|
||||
|
||||
Input Hints
|
||||
-----------
|
||||
|
||||
.. data:: ELM_INPUT_HINT_NONE
|
||||
|
||||
No active hints
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
.. data:: ELM_INPUT_HINT_AUTO_COMPLETE
|
||||
|
||||
Suggest word auto completion
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
.. data:: ELM_INPUT_HINT_SENSITIVE_DATA
|
||||
|
||||
typed text should not be stored
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
|
||||
.. _Elm_Entry_Input_Panel_Lang:
|
||||
|
||||
Input panel language sort order
|
||||
-------------------------------
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LANG_AUTOMATIC
|
||||
|
||||
Automatic
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LANG_ALPHABET
|
||||
|
||||
Alphabetic
|
||||
|
||||
|
||||
.. _Elm_Entry_Input_Panel_Layout:
|
||||
|
||||
Input panel layouts
|
||||
-------------------
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_NORMAL
|
||||
|
||||
Default layout
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_NUMBER
|
||||
|
||||
Number layout
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_EMAIL
|
||||
|
||||
Email layout
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_URL
|
||||
|
||||
URL layout
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_PHONENUMBER
|
||||
|
||||
Phone number layout
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_IP
|
||||
|
||||
IP layout
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_MONTH
|
||||
|
||||
Month layout
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_NUMBERONLY
|
||||
|
||||
Number only layout
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_INVALID
|
||||
|
||||
Never use this
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_HEX
|
||||
|
||||
Hexadecimal layout
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_TERMINAL
|
||||
|
||||
Command-line terminal layout
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_PASSWORD
|
||||
|
||||
Like normal, but no auto-correct, no auto-capitalization etc.
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_DATETIME
|
||||
|
||||
Date and time layout
|
||||
|
||||
.. versionadded:: 1.10
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_EMOTICON
|
||||
|
||||
Emoticon layout
|
||||
|
||||
.. versionadded:: 1.10
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_VOICE
|
||||
|
||||
Voice layout, but if the IME does not support voice, then normal layout will be shown
|
||||
|
||||
.. versionadded:: 1.19
|
||||
|
||||
|
||||
.. _Elm_Input_Panel_Layout_Normal_Variation:
|
||||
|
||||
Input panel normal layout variation
|
||||
-----------------------------------
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_NORMAL
|
||||
|
||||
The plain normal layout
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_FILENAME
|
||||
|
||||
Filename layout. Symbols such as '/' should be disabled
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_PERSON_NAME
|
||||
|
||||
The name of a person
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
|
||||
.. _Elm_Input_Panel_Layout_Numberonly_Variation:
|
||||
|
||||
Input panel numberonly layout variation
|
||||
---------------------------------------
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_NORMAL
|
||||
|
||||
The numberonly normal layout
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED
|
||||
|
||||
The signed number layout
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_DECIMAL
|
||||
|
||||
The decimal number layout
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED_AND_DECIMAL
|
||||
|
||||
The signed and decimal number layout
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
|
||||
.. _Elm_Input_Panel_Layout_Password_Variation:
|
||||
|
||||
Input panel password layout variation
|
||||
-------------------------------------
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NORMAL
|
||||
|
||||
The normal password layout
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NUMBERONLY
|
||||
|
||||
The password layout to allow only number
|
||||
|
||||
.. versionadded:: 1.12
|
||||
|
||||
|
||||
.. _Elm_Entry_Input_Panel_Return_Key_Type:
|
||||
|
||||
Input panel return key modes
|
||||
----------------------------
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT
|
||||
|
||||
Default
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE
|
||||
|
||||
Done
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_GO
|
||||
|
||||
Go
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_JOIN
|
||||
|
||||
Join
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN
|
||||
|
||||
Login
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_NEXT
|
||||
|
||||
Next
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH
|
||||
|
||||
Search
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEND
|
||||
|
||||
Send
|
||||
|
||||
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN
|
||||
|
||||
Sign-in
|
||||
|
||||
.. versionadded:: 1.10
|
||||
|
||||
|
||||
.. _Elm_Entry_Text_Format:
|
||||
|
||||
Text format
|
||||
-----------
|
||||
|
||||
.. data:: ELM_TEXT_FORMAT_PLAIN_UTF8
|
||||
|
||||
Plain UTF-8 type
|
||||
|
||||
.. data:: ELM_TEXT_FORMAT_MARKUP_UTF8
|
||||
|
||||
UTF-8 with markup
|
||||
|
||||
|
||||
.. _Elm_Wrap_Type:
|
||||
|
||||
Wrap mode
|
||||
---------
|
||||
|
||||
.. data:: ELM_WRAP_NONE
|
||||
|
||||
No wrap
|
||||
|
||||
.. data:: ELM_WRAP_CHAR
|
||||
|
||||
Wrap between characters
|
||||
|
||||
.. data:: ELM_WRAP_WORD
|
||||
|
||||
Wrap in allowed wrapping points (as defined in the unicode standard)
|
||||
|
||||
.. data:: ELM_WRAP_MIXED
|
||||
|
||||
Word wrap, and if that fails, char wrap
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Entry
|
||||
:parts: 2
|
||||
|
||||
.. autofunction:: markup_to_utf8
|
||||
.. autofunction:: utf8_to_markup
|
||||
|
||||
.. autoclass:: Entry
|
||||
.. autoclass:: EntryContextMenuItem
|
||||
.. autoclass:: FilterLimitSize
|
||||
.. autoclass:: FilterAcceptSet
|
||||
.. autoclass:: EntryAnchorInfo
|
||||
.. autoclass:: EntryAnchorHoverInfo
|
|
@ -0,0 +1,137 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Fileselector
|
||||
############
|
||||
|
||||
.. image:: /images/fileselector-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
A file selector is a widget that allows a user to navigate through a
|
||||
file system, reporting file selections back via its API.
|
||||
|
||||
It contains shortcut buttons for home directory (*~*) and to jump one
|
||||
directory upwards (..), as well as cancel/ok buttons to confirm/cancel a
|
||||
given selection. After either one of those two former actions, the file
|
||||
selector will issue its ``"done"`` smart callback.
|
||||
|
||||
There's a text entry on it, too, showing the name of the current
|
||||
selection. There's the possibility of making it editable, so it is
|
||||
useful on file saving dialogs on applications, where one gives a file
|
||||
name to save contents to, in a given directory in the system. This
|
||||
custom file name will be reported on the ``"done"`` smart callback
|
||||
(explained in sequence).
|
||||
|
||||
Finally, it has a view to display file system items into in two possible
|
||||
forms:
|
||||
|
||||
- list
|
||||
- grid
|
||||
|
||||
If Elementary is built with support of the Ethumb thumbnailing library,
|
||||
the second form of view will display preview thumbnails of files which
|
||||
it supports.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``activated`` - the user activated a file. This can happen by
|
||||
double-clicking or pressing Enter key. (**event_info** is a string with the
|
||||
activated file path)
|
||||
- ``selected`` - the user has clicked on a file (when not in folders-only
|
||||
mode) or directory (when in folders-only mode)
|
||||
- ``directory,open`` - the list has been populated with new content
|
||||
(*event_info* is the directory's path)
|
||||
- ``done`` - the user has clicked on the "ok" or "cancel"
|
||||
buttons (*event_info* is the selection's path)
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``ok`` - OK button label if the ok button is set. (since 1.8)
|
||||
- ``cancel`` - Cancel button label if the cancel button is set. (since 1.8)
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Fileselector_Mode:
|
||||
|
||||
Fileselector modes
|
||||
------------------
|
||||
|
||||
.. data:: ELM_FILESELECTOR_LIST
|
||||
|
||||
Layout as a list
|
||||
|
||||
.. data:: ELM_FILESELECTOR_GRID
|
||||
|
||||
Layout as a grid
|
||||
|
||||
|
||||
.. _Elm_Fileselector_Sort:
|
||||
|
||||
Fileselector sort method
|
||||
------------------------
|
||||
|
||||
.. data:: ELM_FILESELECTOR_SORT_BY_FILENAME_ASC
|
||||
|
||||
Sort by filename in ascending order
|
||||
|
||||
.. versionadded:: 1.9
|
||||
|
||||
.. data:: ELM_FILESELECTOR_SORT_BY_FILENAME_DESC
|
||||
|
||||
Sort by filename in descending order
|
||||
|
||||
.. versionadded:: 1.9
|
||||
|
||||
.. data:: ELM_FILESELECTOR_SORT_BY_TYPE_ASC
|
||||
|
||||
Sort by file type in ascending order
|
||||
|
||||
.. versionadded:: 1.9
|
||||
|
||||
.. data:: ELM_FILESELECTOR_SORT_BY_TYPE_DESC
|
||||
|
||||
Sort by file type in descending order
|
||||
|
||||
.. versionadded:: 1.9
|
||||
|
||||
.. data:: ELM_FILESELECTOR_SORT_BY_SIZE_ASC
|
||||
|
||||
Sort by file size in ascending order
|
||||
|
||||
.. versionadded:: 1.9
|
||||
|
||||
.. data:: ELM_FILESELECTOR_SORT_BY_SIZE_DESC
|
||||
|
||||
Sort by file size in descending order
|
||||
|
||||
.. versionadded:: 1.9
|
||||
|
||||
.. data:: ELM_FILESELECTOR_SORT_BY_MODIFIED_ASC
|
||||
|
||||
Sort by file modification date in ascending order
|
||||
|
||||
.. versionadded:: 1.9
|
||||
|
||||
.. data:: ELM_FILESELECTOR_SORT_BY_MODIFIED_DESC
|
||||
|
||||
Sort by file modification date in descending order
|
||||
|
||||
.. versionadded:: 1.9
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Fileselector
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Fileselector
|
|
@ -0,0 +1,74 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Fileselector Button
|
||||
###################
|
||||
|
||||
.. image:: /images/fileselector-button-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
This is a button that, when clicked, creates an Elementary window (or
|
||||
inner window) with a :py:class:`~efl.elementary.fileselector.Fileselector`
|
||||
within.
|
||||
|
||||
When a file is chosen, the (inner) window is closed and the button emits
|
||||
a signal having the selected file as it's ``event_info``.
|
||||
|
||||
This widget encapsulates operations on its internal file selector on its
|
||||
own API. There is less control over its file selector than that one
|
||||
would have instantiating one directly.
|
||||
|
||||
|
||||
Available styles
|
||||
================
|
||||
|
||||
- ``default``
|
||||
- ``anchor``
|
||||
- ``hoversel_vertical``
|
||||
- ``hoversel_vertical_entry``
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``file,chosen`` - the user has selected a path which comes as the
|
||||
``event_info`` data
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - Label of the fileselector_button
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``icon`` - Icon of the fileselector_button
|
||||
|
||||
|
||||
Fileselector Interface
|
||||
======================
|
||||
|
||||
This widget supports the fileselector interface.
|
||||
|
||||
If you wish to control the fileselector part using these functions,
|
||||
inherit both the widget class and the
|
||||
:py:class:`~efl.elementary.fileselector.Fileselector` class
|
||||
using multiple inheritance, for example::
|
||||
|
||||
class CustomFileselectorButton(Fileselector, FileselectorButton):
|
||||
def __init__(self, canvas, *args, **kwargs):
|
||||
FileselectorButton.__init__(self, canvas)
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: FileselectorButton
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: FileselectorButton
|
|
@ -0,0 +1,87 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Fileselector Entry
|
||||
##################
|
||||
|
||||
.. image:: /images/fileselector-entry-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
This is an entry made to be filled with or display a file
|
||||
system path string.
|
||||
|
||||
Besides the entry itself, the widget has a
|
||||
:py:class:`~efl.elementary.fileselector_button.FileselectorButton` on its side,
|
||||
which will raise an internal
|
||||
:py:class:`~efl.elementary.fileselector.Fileselector`, when clicked, for path
|
||||
selection aided by file system navigation.
|
||||
|
||||
This file selector may appear in an Elementary window or in an
|
||||
inner window. When a file is chosen from it, the (inner) window
|
||||
is closed and the selected file's path string is exposed both as
|
||||
a smart event and as the new text on the entry.
|
||||
|
||||
This widget encapsulates operations on its internal file
|
||||
selector on its own API. There is less control over its file
|
||||
selector than that one would have instantiating one directly.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``changed`` - The text within the entry was changed
|
||||
- ``activated`` - The entry has had editing finished and
|
||||
changes are to be "committed"
|
||||
- ``press`` - The entry has been clicked
|
||||
- ``longpressed`` - The entry has been clicked (and held) for a
|
||||
couple seconds
|
||||
- ``clicked`` - The entry has been clicked
|
||||
- ``clicked,double`` - The entry has been double clicked
|
||||
- ``selection,paste`` - A paste action has occurred on the
|
||||
entry
|
||||
- ``selection,copy`` - A copy action has occurred on the entry
|
||||
- ``selection,cut`` - A cut action has occurred on the entry
|
||||
- ``unpressed`` - The file selector entry's button was released
|
||||
after being pressed.
|
||||
- ``file,chosen`` - The user has selected a path via the file
|
||||
selector entry's internal file selector, whose string
|
||||
comes as the ``event_info`` data.
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - Label of the fileselector_button
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``button icon`` - Button icon of the fileselector_entry
|
||||
|
||||
|
||||
Fileselector Interface
|
||||
======================
|
||||
|
||||
This widget supports the fileselector interface.
|
||||
|
||||
If you wish to control the fileselector part using these functions,
|
||||
inherit both the widget class and the
|
||||
:py:class:`~efl.elementary.fileselector.Fileselector` class
|
||||
using multiple inheritance, for example::
|
||||
|
||||
class CustomFileselectorButton(Fileselector, FileselectorButton):
|
||||
def __init__(self, canvas, *args, **kwargs):
|
||||
FileselectorButton.__init__(self, canvas)
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: FileselectorEntry
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: FileselectorEntry
|
|
@ -0,0 +1,164 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Flip
|
||||
####
|
||||
|
||||
.. image:: /images/flip-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
This widget holds two content :py:class:`efl.evas.Object`: one on
|
||||
the front and one on the back. It allows you to flip from front to back
|
||||
and vice-versa using various animations.
|
||||
|
||||
If either the front or back contents are not set the flip will treat that
|
||||
as transparent. So if you were to set the front content but not the back,
|
||||
and then call :py:meth:`Flip.go` you would see whatever is below the flip.
|
||||
|
||||
For a list of supported animations see :py:meth:`Flip.go`.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``animate,begin`` - when a flip animation was started
|
||||
- ``animate,done`` - when a flip animation is finished
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``front`` - A front content of the flip
|
||||
- ``back`` - A back content of the flip
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Flip_Direction:
|
||||
|
||||
Flip directions
|
||||
---------------
|
||||
|
||||
.. data:: ELM_FLIP_DIRECTION_UP
|
||||
|
||||
Allows interaction with the top of the widget.
|
||||
|
||||
.. data:: ELM_FLIP_DIRECTION_DOWN
|
||||
|
||||
Allows interaction with the bottom of the widget.
|
||||
|
||||
.. data:: ELM_FLIP_DIRECTION_LEFT
|
||||
|
||||
Allows interaction with the left portion of
|
||||
|
||||
the widget.
|
||||
.. data:: ELM_FLIP_DIRECTION_RIGHT
|
||||
|
||||
Allows interaction with the right portion of
|
||||
|
||||
the widget.
|
||||
|
||||
|
||||
.. _Elm_Flip_Interaction:
|
||||
|
||||
Flip interaction modes
|
||||
----------------------
|
||||
|
||||
.. data:: ELM_FLIP_INTERACTION_NONE
|
||||
|
||||
No interaction is allowed
|
||||
|
||||
.. data:: ELM_FLIP_INTERACTION_ROTATE
|
||||
|
||||
Interaction will cause rotate animation
|
||||
|
||||
.. data:: ELM_FLIP_INTERACTION_CUBE
|
||||
|
||||
Interaction will cause cube animation
|
||||
|
||||
.. data:: ELM_FLIP_INTERACTION_PAGE
|
||||
|
||||
Interaction will cause page animation
|
||||
|
||||
|
||||
.. _Elm_Flip_Mode:
|
||||
|
||||
Flip types
|
||||
----------
|
||||
|
||||
.. data:: ELM_FLIP_ROTATE_Y_CENTER_AXIS
|
||||
|
||||
Rotate the currently visible content around a vertical axis in the
|
||||
middle of its width, the other content is shown as the other side of the
|
||||
flip.
|
||||
|
||||
.. data:: ELM_FLIP_ROTATE_X_CENTER_AXIS
|
||||
|
||||
Rotate the currently visible content around a horizontal axis in the
|
||||
middle of its height, the other content is shown as the other side of
|
||||
the flip.
|
||||
|
||||
.. data:: ELM_FLIP_ROTATE_XZ_CENTER_AXIS
|
||||
|
||||
Rotate the currently visible content around a diagonal axis in the
|
||||
middle of its width, the other content is shown as the other side of the
|
||||
flip.
|
||||
|
||||
.. data:: ELM_FLIP_ROTATE_YZ_CENTER_AXIS
|
||||
|
||||
Rotate the currently visible content around a diagonal axis in the
|
||||
middle of its height, the other content is shown as the other side of
|
||||
the flip.
|
||||
|
||||
.. data:: ELM_FLIP_CUBE_LEFT
|
||||
|
||||
Rotate the currently visible content to the left as if the flip was a
|
||||
cube, the other content is show as the right face of the cube.
|
||||
|
||||
.. data:: ELM_FLIP_CUBE_RIGHT
|
||||
|
||||
Rotate the currently visible content to the right as if the flip was a
|
||||
cube, the other content is show as the left face of the cube.
|
||||
|
||||
.. data:: ELM_FLIP_CUBE_UP
|
||||
|
||||
Rotate the currently visible content up as if the flip was a cube, the
|
||||
other content is show as the bottom face of the cube.
|
||||
|
||||
.. data:: ELM_FLIP_CUBE_DOWN
|
||||
|
||||
Rotate the currently visible content down as if the flip was a cube, the
|
||||
other content is show as the upper face of the cube.
|
||||
|
||||
.. data:: ELM_FLIP_PAGE_LEFT
|
||||
|
||||
Move the currently visible content to the left as if the flip was a
|
||||
book, the other content is shown as the page below that.
|
||||
|
||||
.. data:: ELM_FLIP_PAGE_RIGHT
|
||||
|
||||
Move the currently visible content to the right as if the flip was a
|
||||
book, the other content is shown as the page below that.
|
||||
|
||||
.. data:: ELM_FLIP_PAGE_UP
|
||||
|
||||
Move the currently visible content up as if the flip was a book, the
|
||||
other content is shown as the page below that.
|
||||
|
||||
.. data:: ELM_FLIP_PAGE_DOWN
|
||||
|
||||
Move the currently visible content down as if the flip was a book, the
|
||||
other content is shown as the page below that.
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Flip
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Flip
|
|
@ -0,0 +1,50 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Flipselector
|
||||
############
|
||||
|
||||
.. image:: /images/flipselector-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
A flip selector is a widget to show a set of *text* items, one at a time, with
|
||||
the same sheet switching style as the :py:class:`~efl.elementary.clock.Clock`
|
||||
widget, when one changes the current displaying sheet (thus, the "flip" in the
|
||||
name).
|
||||
|
||||
User clicks to flip sheets which are *held* for some time will
|
||||
make the flip selector to flip continuously and automatically for
|
||||
the user. The interval between flips will keep growing in time,
|
||||
so that it helps the user to reach an item which is distant from
|
||||
the current selection.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``selected`` - when the widget's selected text item is changed
|
||||
- ``overflowed`` - when the widget's current selection is changed
|
||||
from the first item in its list to the last
|
||||
- ``underflowed`` - when the widget's current selection is changed
|
||||
from the last item in its list to the first
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - label of the flipselector item
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram::
|
||||
FlipSelector
|
||||
FlipSelectorItem
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: FlipSelector
|
||||
.. autoclass:: FlipSelectorItem
|
|
@ -0,0 +1,54 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Frame
|
||||
#####
|
||||
|
||||
.. image:: /images/frame-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
Frame is a widget that holds some content and has a title.
|
||||
|
||||
|
||||
Available styles
|
||||
================
|
||||
|
||||
- default
|
||||
- pad_small
|
||||
- pad_medium
|
||||
- pad_large
|
||||
- pad_huge
|
||||
- outdent_top
|
||||
- outdent_bottom
|
||||
|
||||
Out of all these styles only default shows the title.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``clicked`` - The user has clicked the frame's label
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``default`` - A content of the frame
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - Label of the frame
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Frame
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Frame
|
|
@ -1,27 +1,13 @@
|
|||
# Copyright (C) 2007-2014 various contributors (see AUTHORS)
|
||||
#
|
||||
# This file is part of Python-EFL.
|
||||
#
|
||||
# Python-EFL is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 3 of the License, or (at your option) any later version.
|
||||
#
|
||||
# Python-EFL is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this Python-EFL. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
.. currentmodule:: efl.elementary
|
||||
|
||||
"""
|
||||
Gengrid
|
||||
#######
|
||||
|
||||
.. image:: /images/gengrid-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
------------------
|
||||
==================
|
||||
|
||||
This widget aims to position objects in a grid layout while actually
|
||||
creating and rendering only the visible ones, using the same idea as the
|
||||
|
@ -33,6 +19,7 @@ clicking on items to select them and clicking on the grid's viewport and
|
|||
swiping to pan the whole view) or via the keyboard, navigating through
|
||||
item with the arrow keys.
|
||||
|
||||
|
||||
Scrollable Interface
|
||||
====================
|
||||
|
||||
|
@ -47,6 +34,7 @@ using multiple inheritance, for example::
|
|||
def __init__(self, canvas, *args, **kwargs):
|
||||
Genlist.__init__(self, canvas)
|
||||
|
||||
|
||||
Gengrid layouts
|
||||
===============
|
||||
|
||||
|
@ -63,6 +51,7 @@ placed in **rows**, from left to right and, when the space for a row is
|
|||
filled, another one is started below, thus expanding the grid vertically
|
||||
(and making for vertical scrolling).
|
||||
|
||||
|
||||
Gengrid items
|
||||
=============
|
||||
|
||||
|
@ -85,6 +74,7 @@ by default - "default", but this can be extended by system or
|
|||
application custom themes/overlays/extensions (see
|
||||
:py:class:`~efl.elementary.theme.Theme` for more details).
|
||||
|
||||
|
||||
Gengrid item classes
|
||||
====================
|
||||
|
||||
|
@ -95,20 +85,19 @@ multiple different items with different classes, states and styles).
|
|||
Gengrid will call the functions in this struct (methods) when an item is
|
||||
"realized" (i.e., created dynamically, while the user is scrolling the
|
||||
grid). All objects will simply be deleted when no longer needed with
|
||||
evas_object_del(). The #Elm_Gengrid_Item_Class structure contains the
|
||||
following members:
|
||||
:meth:`~efl.eo.Eo.delete`. The :class:`GengridItemClass` class contains the
|
||||
following attributes and methods:
|
||||
|
||||
- ``item_style`` - This is a constant string and simply defines the name
|
||||
of the item style. It **must** be specified and the default should be
|
||||
``"default".``
|
||||
``default``.
|
||||
- ``func.text_get`` - This function is called when an item object is
|
||||
actually created. The ``data`` parameter will point to the same data
|
||||
passed to elm_gengrid_item_append() and related item creation
|
||||
passed to :meth:`~Gengrid.item_append` and related item creation
|
||||
functions. The ``obj`` parameter is the gengrid object itself, while
|
||||
the ``part`` one is the name string of one of the existing text parts
|
||||
in the Edje group implementing the item's theme. This function
|
||||
**must** return a strdup'()ed string, as the caller will free() it
|
||||
when done. See :py:meth:`GengridItem.text_get`.
|
||||
in the Edje group implementing the item's theme.
|
||||
See :py:meth:`GengridItemClass.text_get`.
|
||||
- ``func.content_get`` - This function is called when an item object is
|
||||
actually created. The ``data`` parameter will point to the same data
|
||||
passed to :py:meth:`GengridItem.append_to` and related item creation
|
||||
|
@ -117,7 +106,7 @@ following members:
|
|||
swallow parts in the Edje group implementing the item's theme. It must
|
||||
return ``None,`` when no content is desired, or a valid object handle,
|
||||
otherwise. The object will be deleted by the gengrid on its deletion
|
||||
or when the item is "unrealized". See :py:meth:`GengridItem.content_get`.
|
||||
or when the item is "unrealized". See :py:meth:`GengridItemClass.content_get`.
|
||||
- ``func.state_get`` - This function is called when an item object is
|
||||
actually created. The ``data`` parameter will point to the same data
|
||||
passed to :py:meth:`GengridItem.append_to` and related item creation
|
||||
|
@ -128,59 +117,64 @@ following members:
|
|||
its theming Edje object with ``"elm,state,xxx,active"`` and ``"elm"``
|
||||
as "emission" and "source" arguments, respectively, when the state is
|
||||
true (the default is false), where ``xxx`` is the name of the (state)
|
||||
part. See #Elm_Gengrid_Item_State_Get_Cb.
|
||||
- ``func.del`` - This is called when elm_object_item_del() is called on
|
||||
an item or elm_gengrid_clear() is called on the gengrid. This is
|
||||
part. See :py:meth:`GengridItemClass.state_get`.
|
||||
- ``func.del`` - This is called when
|
||||
:meth:`efl.elementary.object_item.ObjectItem.delete` is called on
|
||||
an item or :meth:`~Gengrid.clear` is called on the gengrid. This is
|
||||
intended for use when gengrid items are deleted, so any data attached
|
||||
to the item (e.g. its data parameter on creation) can be deleted. See
|
||||
:py:meth:`GengridItem.delete`.
|
||||
:py:meth:`GengridItemClass.delete`.
|
||||
|
||||
|
||||
Usage hints
|
||||
===========
|
||||
|
||||
If the user wants to have multiple items selected at the same time,
|
||||
elm_gengrid_multi_select_set() will permit it. If the gengrid is
|
||||
single-selection only (the default), then elm_gengrid_select_item_get()
|
||||
:attr:`~Gengrid.multi_select` will permit it. If the gengrid is
|
||||
single-selection only (the default), then :attr:`~Gengrid.selected_item`
|
||||
will return the selected item or ``None``, if none is selected. If the
|
||||
gengrid is under multi-selection, then elm_gengrid_selected_items_get()
|
||||
gengrid is under multi-selection, then :attr:`~Gengrid.selected_items`
|
||||
will return a list (that is only valid as long as no items are modified
|
||||
(added, deleted, selected or unselected) of child items on a gengrid.
|
||||
|
||||
If an item changes (internal (boolean) state, text or content changes),
|
||||
then use elm_gengrid_item_update() to have gengrid update the item with
|
||||
then use :meth:`~GengridItem.update` to have gengrid update the item with
|
||||
the new state. A gengrid will re-"realize" the item, thus calling the
|
||||
functions in the #Elm_Gengrid_Item_Class set for that item.
|
||||
functions in the :class:`GengridItemClass` set for that item.
|
||||
|
||||
To programmatically (un)select an item, use
|
||||
elm_gengrid_item_selected_set(). To get its selected state use
|
||||
elm_gengrid_item_selected_get(). To make an item disabled (unable to be
|
||||
selected and appear differently) use elm_object_item_disabled_set() to
|
||||
set this and elm_object_item_disabled_get() to get the disabled state.
|
||||
To programmatically (un)select an item or get the selected state, use
|
||||
:attr:`GengridItem.selected`. To make an item disabled (unable to be
|
||||
selected and appear differently) or get the disabled state
|
||||
use :attr:`GengridItem.disabled`.
|
||||
|
||||
Grid cells will only have their selection smart callbacks called when
|
||||
firstly getting selected. Any further clicks will do nothing, unless you
|
||||
enable the "always select mode", with elm_gengrid_select_mode_set() as
|
||||
ELM_OBJECT_SELECT_MODE_ALWAYS, thus making every click to issue
|
||||
selection callbacks. elm_gengrid_select_mode_set() as
|
||||
ELM_OBJECT_SELECT_MODE_NONE will turn off the ability to select items
|
||||
enable the "always select mode", with :attr:`~Gengrid.select_mode` as
|
||||
:attr:`ELM_OBJECT_SELECT_MODE_ALWAYS`, thus making every click to issue
|
||||
selection callbacks. :attr:`~Gengrid.select_mode` as
|
||||
:attr:`ELM_OBJECT_SELECT_MODE_NONE` will turn off the ability to select items
|
||||
entirely in the widget and they will neither appear selected nor call
|
||||
the selection smart callbacks.
|
||||
|
||||
Remember that you can create new styles and add your own theme
|
||||
augmentation per application with elm_theme_extension_add(). If you
|
||||
augmentation per application with
|
||||
:meth:`Theme.extension_add<efl.elementary.theme.Theme.extension_add>`. If you
|
||||
absolutely must have a specific style that overrides any theme the user
|
||||
or system sets up you can use elm_theme_overlay_add() to add such a file.
|
||||
or system sets up you can use
|
||||
:meth:`Theme.extension_add<efl.elementary.theme.Theme.overlay_add>` to add such
|
||||
a file.
|
||||
|
||||
Gengrid smart events
|
||||
====================
|
||||
|
||||
Smart events that you can add callbacks for are:
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``activated`` - The user has double-clicked or pressed
|
||||
(enter|return|spacebar) on an item. The ``event_info`` parameter
|
||||
is the gengrid item that was activated.
|
||||
- ``clicked,double`` - The user has double-clicked an item.
|
||||
The ``event_info`` parameter is the gengrid item that was double-clicked.
|
||||
- ``clicked,right`` - The user has right-clicked an item. The
|
||||
``event_info`` parameter is the item that was right-clicked. (since: 1.13)
|
||||
- ``longpressed`` - This is called when the item is pressed for a certain
|
||||
amount of time. By default it's 1 second.
|
||||
- ``selected`` - The user has made an item selected. The
|
||||
|
@ -189,11 +183,7 @@ Smart events that you can add callbacks for are:
|
|||
``event_info`` parameter is the gengrid item that was unselected.
|
||||
- ``realized`` - This is called when the item in the gengrid
|
||||
has its implementing Evas object instantiated, de facto.
|
||||
``event_info`` is the gengrid item that was created. The object
|
||||
may be deleted at any time, so it is highly advised to the
|
||||
caller **not** to use the object returned from
|
||||
:py:attr:`GengridItem.object`, because it may point to freed
|
||||
objects.
|
||||
``event_info`` is the gengrid item that was created.
|
||||
- ``unrealized`` - This is called when the implementing Evas
|
||||
object for this item is deleted. ``event_info`` is the gengrid
|
||||
item that was deleted.
|
||||
|
@ -231,23 +221,18 @@ Smart events that you can add callbacks for are:
|
|||
- ``edge,right`` - This is called when the gengrid is scrolled
|
||||
until the right edge.
|
||||
- ``moved`` - This is called when a gengrid item is moved by a user
|
||||
interaction in a reorder mode. The %c event_info parameter is the item that
|
||||
interaction in a reorder mode. The ``event_info`` parameter is the item that
|
||||
was moved.
|
||||
- ``index,update`` - This is called when a gengrid item index is changed.
|
||||
Note that this callback is called while each item is being realized.
|
||||
- ``highlighted`` - an item in the list is highlighted. This is called when
|
||||
the user presses an item or keyboard selection is done so the item is
|
||||
physically highlighted. The %c event_info parameter is the item that was
|
||||
physically highlighted. The ``event_info`` parameter is the item that was
|
||||
highlighted.
|
||||
- ``unhighlighted`` - an item in the list is unhighlighted. This is called
|
||||
when the user releases an item or keyboard selection is moved so the item
|
||||
is physically unhighlighted. The %c event_info parameter is the item that
|
||||
is physically unhighlighted. The ``event_info`` parameter is the item that
|
||||
was unhighlighted.
|
||||
- ``language,changed`` - This is called when the program's language is
|
||||
changed. Call the elm_gengrid_realized_items_update() if items text should
|
||||
be translated.
|
||||
- ``focused`` - When the gengrid has received focus. (since 1.8)
|
||||
- ``unfocused`` - When the gengrid has lost focus. (since 1.8)
|
||||
- ``item,focused`` - When the gengrid item has received focus. (since 1.10)
|
||||
- ``item,unfocused`` - When the gengrid item has lost focus. (since 1.10)
|
||||
- ``item,reorder,anim,start`` - This is called when a gengrid item movement
|
||||
|
@ -256,35 +241,42 @@ Smart events that you can add callbacks for are:
|
|||
- ``item,reorder,anim,stop`` - This is called when a gengrid item movement just
|
||||
stopped in reorder mode. The parameter is the item that was moved. (since 1.10)
|
||||
|
||||
|
||||
Enumerations
|
||||
------------
|
||||
============
|
||||
|
||||
.. _Elm_Gengrid_Item_Scrollto_Type:
|
||||
|
||||
Items' scroll to types
|
||||
======================
|
||||
----------------------
|
||||
|
||||
.. data:: ELM_GENLIST_ITEM_SCROLLTO_NONE
|
||||
.. data:: ELM_GENGRID_ITEM_SCROLLTO_NONE
|
||||
|
||||
No scroll to
|
||||
|
||||
.. data:: ELM_GENLIST_ITEM_SCROLLTO_IN
|
||||
.. data:: ELM_GENGRID_ITEM_SCROLLTO_IN
|
||||
|
||||
Scroll to the nearest viewport
|
||||
|
||||
.. data:: ELM_GENLIST_ITEM_SCROLLTO_TOP
|
||||
.. data:: ELM_GENGRID_ITEM_SCROLLTO_TOP
|
||||
|
||||
Scroll to the top of viewport
|
||||
|
||||
.. data:: ELM_GENLIST_ITEM_SCROLLTO_MIDDLE
|
||||
.. data:: ELM_GENGRID_ITEM_SCROLLTO_MIDDLE
|
||||
|
||||
Scroll to the middle of viewport
|
||||
|
||||
.. data:: ELM_GENGRID_ITEM_SCROLLTO_BOTTOM
|
||||
|
||||
Scroll to the bottom of viewport
|
||||
|
||||
.. versionadded:: 1.17
|
||||
|
||||
|
||||
.. _Elm_Gengrid_Object_Multi_Select_Mode:
|
||||
|
||||
Multi-select mode
|
||||
=================
|
||||
-----------------
|
||||
|
||||
.. data:: ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT
|
||||
|
||||
|
@ -308,7 +300,7 @@ Multi-select mode
|
|||
.. _Elm_Gengrid_Reorder_Type:
|
||||
|
||||
Reorder type
|
||||
============
|
||||
------------
|
||||
|
||||
.. data:: ELM_GENGRID_REORDER_TYPE_NORMAL
|
||||
|
||||
|
@ -322,165 +314,17 @@ Reorder type
|
|||
|
||||
.. versionadded:: 1.11
|
||||
|
||||
"""
|
||||
|
||||
include "tooltips.pxi"
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
from libc.string cimport strdup
|
||||
from libc.stdint cimport uintptr_t
|
||||
from cpython cimport Py_INCREF, Py_DECREF, PyUnicode_AsUTF8String
|
||||
from efl.eo cimport object_from_instance, _object_mapping_register, PY_REFCOUNT
|
||||
from efl.utils.conversions cimport _ctouni, _touni
|
||||
|
||||
from efl.evas cimport Object as evasObject
|
||||
from object cimport Object
|
||||
from object_item cimport ObjectItem, _object_item_to_python, \
|
||||
elm_object_item_widget_get, _object_item_from_python, \
|
||||
_object_item_list_to_python, elm_object_item_data_get
|
||||
cimport enums
|
||||
|
||||
import traceback
|
||||
|
||||
from efl.utils.deprecated cimport DEPRECATED
|
||||
from scroller cimport elm_scroller_policy_get, elm_scroller_policy_set, \
|
||||
elm_scroller_bounce_get, elm_scroller_bounce_set, Elm_Scroller_Policy
|
||||
.. inheritance-diagram::
|
||||
Gengrid
|
||||
GengridItem
|
||||
GengridItemClass
|
||||
:parts: 2
|
||||
|
||||
|
||||
ELM_GENLIST_ITEM_SCROLLTO_NONE = enums.ELM_GENLIST_ITEM_SCROLLTO_NONE
|
||||
ELM_GENLIST_ITEM_SCROLLTO_IN = enums.ELM_GENLIST_ITEM_SCROLLTO_IN
|
||||
ELM_GENLIST_ITEM_SCROLLTO_TOP = enums.ELM_GENLIST_ITEM_SCROLLTO_TOP
|
||||
ELM_GENLIST_ITEM_SCROLLTO_MIDDLE = enums.ELM_GENLIST_ITEM_SCROLLTO_MIDDLE
|
||||
|
||||
ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT = enums.ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT
|
||||
ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL = enums.ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL
|
||||
ELM_OBJECT_MULTI_SELECT_MODE_MAX = enums.ELM_OBJECT_MULTI_SELECT_MODE_MAX
|
||||
|
||||
ELM_GENGRID_REORDER_TYPE_NORMAL = enums.ELM_GENGRID_REORDER_TYPE_NORMAL
|
||||
ELM_GENGRID_REORDER_TYPE_SWAP = enums.ELM_GENGRID_REORDER_TYPE_SWAP
|
||||
|
||||
def _cb_object_item_conv(uintptr_t addr):
|
||||
cdef Elm_Object_Item *it = <Elm_Object_Item *>addr
|
||||
return _object_item_to_python(it)
|
||||
|
||||
cdef char *_py_elm_gengrid_item_text_get(void *data, Evas_Object *obj, const char *part) with gil:
|
||||
cdef:
|
||||
GengridItem item = <GengridItem>data
|
||||
unicode u = _ctouni(part)
|
||||
|
||||
func = item.item_class._text_get_func
|
||||
if func is None:
|
||||
return NULL
|
||||
|
||||
try:
|
||||
o = object_from_instance(obj)
|
||||
ret = func(o, u, item.item_data)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return NULL
|
||||
|
||||
if ret is not None:
|
||||
if isinstance(ret, unicode): ret = PyUnicode_AsUTF8String(ret)
|
||||
return strdup(ret)
|
||||
else:
|
||||
return NULL
|
||||
|
||||
cdef Evas_Object *_py_elm_gengrid_item_content_get(void *data, Evas_Object *obj, const char *part) with gil:
|
||||
cdef:
|
||||
GengridItem item = <GengridItem>data
|
||||
unicode u = _ctouni(part)
|
||||
evasObject icon
|
||||
|
||||
func = item.item_class._content_get_func
|
||||
if func is None:
|
||||
return NULL
|
||||
|
||||
o = object_from_instance(obj)
|
||||
|
||||
try:
|
||||
icon = func(o, u, item.item_data)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return NULL
|
||||
|
||||
if icon is not None:
|
||||
return icon.obj
|
||||
else:
|
||||
return NULL
|
||||
|
||||
cdef Eina_Bool _py_elm_gengrid_item_state_get(void *data, Evas_Object *obj, const char *part) with gil:
|
||||
cdef:
|
||||
GengridItem item = <GengridItem>data
|
||||
unicode u = _ctouni(part)
|
||||
|
||||
func = item.item_class._state_get_func
|
||||
if func is None:
|
||||
return 0
|
||||
|
||||
try:
|
||||
o = object_from_instance(obj)
|
||||
ret = func(o, part, item.item_data)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return 0
|
||||
|
||||
return ret if ret is not None else 0
|
||||
|
||||
cdef void _py_elm_gengrid_object_item_del(void *data, Evas_Object *obj) with gil:
|
||||
cdef GengridItem item = <GengridItem>data
|
||||
|
||||
if item is None:
|
||||
return
|
||||
|
||||
func = item.item_class._del_func
|
||||
|
||||
if func is not None:
|
||||
try:
|
||||
o = object_from_instance(obj)
|
||||
func(o, item.item_data)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
item._unset_obj()
|
||||
|
||||
cdef void _py_elm_gengrid_item_func(void *data, Evas_Object *obj, void *event_info) with gil:
|
||||
cdef GengridItem item
|
||||
|
||||
assert data != NULL, "data is NULL in Gengrid select cb"
|
||||
|
||||
item = <GengridItem>data
|
||||
|
||||
if item.cb_func is not None:
|
||||
try:
|
||||
o = object_from_instance(obj)
|
||||
item.cb_func(item, o, item.func_data)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
cdef int _gengrid_compare_cb(const void *data1, const void *data2) with gil:
|
||||
cdef:
|
||||
Elm_Object_Item *citem1 = <Elm_Object_Item *>data1
|
||||
Elm_Object_Item *citem2 = <Elm_Object_Item *>data2
|
||||
GengridItem item1 = <GengridItem>elm_object_item_data_get(citem1)
|
||||
GengridItem item2 = <GengridItem>elm_object_item_data_get(citem2)
|
||||
object func
|
||||
|
||||
if item1.comparison_func is not None:
|
||||
func = item1.comparison_func
|
||||
elif item2.comparison_func is not None:
|
||||
func = item2.comparison_func
|
||||
else:
|
||||
return 0
|
||||
|
||||
ret = func(item1, item2)
|
||||
if ret is not None:
|
||||
try:
|
||||
return ret
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return 0
|
||||
else:
|
||||
return 0
|
||||
|
||||
include "gengrid_widget.pxi"
|
||||
include "gengrid_item_class.pxi"
|
||||
include "gengrid_item.pxi"
|
||||
.. autoclass:: Gengrid
|
||||
.. autoclass:: GengridItem
|
||||
.. autoclass:: GengridItemClass
|
|
@ -1,105 +1,80 @@
|
|||
# Copyright (C) 2007-2014 various contributors (see AUTHORS)
|
||||
#
|
||||
# This file is part of Python-EFL.
|
||||
#
|
||||
# Python-EFL is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 3 of the License, or (at your option) any later version.
|
||||
#
|
||||
# Python-EFL is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this Python-EFL. If not, see <http://www.gnu.org/licenses/>.
|
||||
.. currentmodule:: efl.elementary
|
||||
|
||||
"""
|
||||
Genlist
|
||||
#######
|
||||
|
||||
.. image:: /images/genlist-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
------------------
|
||||
==================
|
||||
|
||||
This widget aims to have more expansive list than the simple list in
|
||||
Elementary that could have more flexible items and allow many more
|
||||
entries while still being fast and low on memory usage. At the same time
|
||||
it was also made to be able to do tree structures. But the price to pay
|
||||
is more complexity when it comes to usage. If all you want is a simple
|
||||
list with icons and a single text, use the normal
|
||||
:py:class:`~efl.elementary.list.List` object.
|
||||
list (not much items) with icons and a single text, use the normal
|
||||
:class:`List` object.
|
||||
|
||||
Genlist has a fairly large API, mostly because it's relatively complex,
|
||||
trying to be both expansive, powerful and efficient. First we will begin
|
||||
an overview on the theory behind genlist.
|
||||
|
||||
|
||||
Genlist item classes - creating items
|
||||
=====================================
|
||||
|
||||
In order to have the ability to add and delete items on the fly, genlist
|
||||
implements a class (callback) system where the application provides a
|
||||
implements the item class (callback) system where the application provides a
|
||||
structure with information about that type of item (genlist may contain
|
||||
multiple different items with different classes, states and styles).
|
||||
Genlist will call the functions in this struct (methods) when an item is
|
||||
Genlist will call the functions in this class (methods) when an item is
|
||||
"realized" (i.e., created dynamically, while the user is scrolling the
|
||||
grid). All objects will simply be deleted when no longer needed with
|
||||
:py:meth:`~efl.evas.Object.delete`. :py:class:`GenlistItemClass` contains the
|
||||
:func:`efl.evas.Object.delete`. :class:`GenlistItemClass` contains the
|
||||
following members:
|
||||
|
||||
- ``item_style`` - This is a constant string and simply defines the name
|
||||
of the item style. It **must** be specified and the default should be
|
||||
``"default".``
|
||||
- ``decorate_item_style`` - This is a constant string and simply defines
|
||||
the name of the decorate mode item style. It is used to specify
|
||||
decorate mode item style. It can be used when you call
|
||||
:py:attr:`GenlistItem.decorate_mode`.
|
||||
- ``decorate_all_item_style`` - This is a constant string and simply
|
||||
defines the name of the decorate all item style. It is used to specify
|
||||
decorate all item style. It can be used to set selection, checking and
|
||||
deletion mode. This is used when you call
|
||||
:py:attr:`Genlist.decorate_mode`.
|
||||
- ``func`` - A struct with pointers to functions that will be called when
|
||||
an item is going to be actually created. All of them receive a ``data``
|
||||
parameter that will point to the same data passed to
|
||||
:py:meth:`GenlistItem.append_to` and related item creation functions, and an
|
||||
``obj`` parameter that points to the genlist object itself.
|
||||
|
||||
The function pointers inside ``func`` are ``text_get``, ``content_get``,
|
||||
``state_get`` and ``del``. The 3 first functions also receive a ``part``
|
||||
parameter described below. A brief description of these functions follows:
|
||||
|
||||
- ``text_get`` - The ``part`` parameter is the name string of one of the
|
||||
existing text parts in the Edje group implementing the item's theme.
|
||||
See :py:meth:`GenlistItemClass.text_get`.
|
||||
- ``content_get`` - The ``part`` parameter is the name string of one of the
|
||||
existing (content) swallow parts in the Edje group implementing the
|
||||
item's theme. It must return ``None``, when no content is desired, or
|
||||
a valid object handle, otherwise. The object will be deleted by the
|
||||
- ``item_style`` - This is a constant string and define the name of the default
|
||||
item style. It **must** be provided.
|
||||
- ``decorate_item_style`` - This is a constant string and define the name of
|
||||
the style to be used in the "decorate" mode.
|
||||
See :attr:`GenlistItem.decorate_mode`.
|
||||
- ``decorate_all_item_style`` - This is a constant string and
|
||||
define the name of the style to be used in the "decorate all" mode.
|
||||
See :attr:`Genlist.decorate_mode`.
|
||||
- ``text_get`` - This function will be called for every text part. Should
|
||||
return the text to display. See :func:`GenlistItemClass.text_get`.
|
||||
- ``content_get`` - This function will be called for every content part.
|
||||
Should return an object to display, the object will be deleted by the
|
||||
genlist on its deletion or when the item is "unrealized". See
|
||||
:py:meth:`GenlistItemClass.content_get`.
|
||||
- ``func.state_get`` - The ``part`` parameter is the name string of one of
|
||||
the state parts in the Edje group implementing the item's theme. Return
|
||||
``False`` for false/off or ``True`` for true/on. Genlists will
|
||||
:func:`GenlistItemClass.content_get`.
|
||||
- ``state_get`` - This function will be called for every state part. Must
|
||||
return ``True`` for false/off or ``True`` for true/on. Genlists will
|
||||
emit a signal to its theming Edje object with ``"elm,state,xxx,active"``
|
||||
and ``"elm"`` as "emission" and "source" arguments, respectively, when
|
||||
the state is true (the default is false), where ``xxx`` is the name of
|
||||
the (state) part. See :py:meth:`GenlistItemClass.state_get`.
|
||||
the (state) part. See :func:`GenlistItemClass.state_get`.
|
||||
- ``func.del`` - This is intended for use when genlist items are deleted,
|
||||
so any data attached to the item (e.g. its data parameter on creation)
|
||||
can be deleted. See :py:meth:`GenlistItemClass.delete`.
|
||||
can be deleted. See :func:`GenlistItemClass.delete`.
|
||||
|
||||
Available item styles:
|
||||
|
||||
- default
|
||||
- default_style - The text part is a textblock
|
||||
- double_label
|
||||
- icon_top_text_bottom
|
||||
- group_index
|
||||
Available item styles
|
||||
=====================
|
||||
|
||||
- ``default`` The default style: icon, text, end icon
|
||||
- ``default_style`` The text part is a textblock and can use markups
|
||||
- ``double_label`` Two different text parts
|
||||
- ``icon_top_text_bottom``
|
||||
- ``group_index``
|
||||
- ``one_icon`` Only 1 icon (left) (since: 1.1)
|
||||
- ``end_icon`` Only 1 icon (at end/right) (since: 1.1)
|
||||
- ``no_icon`` No icon (since: 1.1)
|
||||
- ``full`` Only one object, elm.swallow.content, which consumes whole area of
|
||||
the genlist item (since: 1.7)
|
||||
- ``indent`` Has indentation to match tree group items (since: 1.19)
|
||||
|
||||
- one_icon - Only 1 icon (left) :since: 1.1
|
||||
- end_icon - Only 1 icon (at end/right) :since: 1.1
|
||||
- no_icon - No icon (at end/right) :since: 1.1
|
||||
|
||||
Structure of items
|
||||
==================
|
||||
|
@ -117,28 +92,24 @@ spaces in the data fields. For the default genlist item theme, we have
|
|||
**one** text part (``elm.text``), **two** content parts
|
||||
(``elm.swallow.icon`` and ``elm.swallow.end``) and **no** state parts.
|
||||
|
||||
A genlist item may be at one of several styles. Elementary provides one
|
||||
by default - "default", but this can be extended by system or application
|
||||
custom themes/overlays/extensions (see :py:mod:`themes<efl.elementary.theme>`)
|
||||
for more details).
|
||||
|
||||
Editing and Navigating
|
||||
======================
|
||||
|
||||
Items can be added by several calls. All of them return a
|
||||
:py:class:`GenlistItem` handle that is an internal member inside the genlist.
|
||||
They all take a data parameter that is meant to be used for a handle to
|
||||
the applications internal data (eg. the struct with the original item
|
||||
data). The parent parameter is the parent genlist item this belongs to if
|
||||
it is a tree or an indexed group, and None if there is no parent. The
|
||||
flags can be a bitmask of #ELM_GENLIST_ITEM_NONE, #ELM_GENLIST_ITEM_TREE
|
||||
and #ELM_GENLIST_ITEM_GROUP. If #ELM_GENLIST_ITEM_TREE is set then this
|
||||
item is displayed as an item that is able to expand and have child items.
|
||||
If #ELM_GENLIST_ITEM_GROUP is set then this item is group index item that
|
||||
is displayed at the top until the next group comes. The func parameter is
|
||||
a convenience callback that is called when the item is selected and the
|
||||
data parameter will be the func_data parameter, ``obj`` be the genlist
|
||||
object and event_info will be the genlist item.
|
||||
They all take a data parameter that is meant to be used for a handle to the
|
||||
applications internal data (eg. the struct with the original item data). The
|
||||
parent parameter is the parent genlist item this belongs to if it is a tree or
|
||||
an indexed group, and None if there is no parent. The flags can be a bitmask of
|
||||
:attr:`ELM_GENLIST_ITEM_NONE`, :attr:`ELM_GENLIST_ITEM_TREE` and
|
||||
:attr:`ELM_GENLIST_ITEM_GROUP`. If :attr:`ELM_GENLIST_ITEM_TREE` is set then
|
||||
this item is displayed as an item that is able to expand and have child items.
|
||||
If :attr:`ELM_GENLIST_ITEM_GROUP` is set then this item is group index item
|
||||
that is displayed at the top until the next group comes. The func parameter is
|
||||
a convenience callback that is called when the item is selected and the data
|
||||
parameter will be the func_data parameter, ``obj`` be the genlist object and
|
||||
event_info will be the genlist item.
|
||||
|
||||
:py:meth:`GenlistItem.append_to` adds an item to the end of the list, or if
|
||||
there is a parent, to the end of all the child items of the parent.
|
||||
|
@ -154,7 +125,7 @@ item. :py:meth:`GenlistItem.subitems_clear` will clear all items that are
|
|||
children of the indicated parent item.
|
||||
|
||||
To help inspect list items you can jump to the item at the top of the list
|
||||
with :py:attr:`Genlist.first_item` which will return the item pointer, and
|
||||
with :py:attr:`Genlist.first_item` which will return the first item, and
|
||||
similarly :py:attr:`Genlist.last_item` gets the item at the end of the list.
|
||||
:py:attr:`GenlistItem.next` and :py:attr:`GenlistItem.prev` get the next
|
||||
and previous items respectively relative to the indicated item. Using
|
||||
|
@ -163,6 +134,7 @@ the items are flattened in the list, so :py:attr:`GenlistItem.parent` will
|
|||
let you know which item is the parent (and thus know how to skip them if
|
||||
wanted).
|
||||
|
||||
|
||||
Multi-selection
|
||||
===============
|
||||
|
||||
|
@ -174,6 +146,7 @@ list is multi-select then :py:attr:`Genlist.selected_items` will return a
|
|||
list (that is only valid as long as no items are modified (added, deleted,
|
||||
selected or unselected)).
|
||||
|
||||
|
||||
Usage hints
|
||||
===========
|
||||
|
||||
|
@ -221,6 +194,7 @@ absolutely must have a specific style that overrides any theme the user or
|
|||
system sets up you can use :py:meth:`efl.elementary.theme.Theme.overlay_add` to
|
||||
add such a file.
|
||||
|
||||
|
||||
Scrollable Interface
|
||||
====================
|
||||
|
||||
|
@ -235,6 +209,7 @@ using multiple inheritance, for example::
|
|||
def __init__(self, canvas, *args, **kwargs):
|
||||
Genlist.__init__(self, canvas)
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
|
@ -266,16 +241,17 @@ requested (allowing for efficient building of a very deep tree that could
|
|||
even be used for file-management). See the above smart signal callbacks for
|
||||
details.
|
||||
|
||||
Genlist smart events
|
||||
====================
|
||||
|
||||
Signals that you can add callbacks for are:
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``activated`` - The user has double-clicked or pressed
|
||||
(enter|return|spacebar) on an item. The ``event_info`` parameter is the
|
||||
item that was activated.
|
||||
- ``clicked,double`` - The user has double-clicked an item. The
|
||||
``event_info`` parameter is the item that was double-clicked.
|
||||
- ``clicked,right`` - The user has right-clicked an item. The
|
||||
``event_info`` parameter is the item that was right-clicked. (since: 1.13)
|
||||
- ``selected`` - This is called when a user has made an item selected.
|
||||
The event_info parameter is the genlist item that was selected.
|
||||
- ``unselected`` - This is called when a user has made an item
|
||||
|
@ -363,25 +339,26 @@ Signals that you can add callbacks for are:
|
|||
is finished.
|
||||
- ``highlighted`` - an item in the list is highlighted. This is called when
|
||||
the user presses an item or keyboard selection is done so the item is
|
||||
physically highlighted. The %c event_info parameter is the item that was
|
||||
physically highlighted. The ``event_info`` parameter is the item that was
|
||||
highlighted.
|
||||
- ``unhighlighted`` - an item in the list is unhighlighted. This is called
|
||||
when the user releases an item or keyboard selection is moved so the item
|
||||
is physically unhighlighted. The %c event_info parameter is the item that
|
||||
is physically unhighlighted. The ``event_info`` parameter is the item that
|
||||
was unhighlighted.
|
||||
- ``focused`` - When the genlist has received focus. (since 1.8)
|
||||
- ``unfocused`` - When the genlist has lost focus. (since 1.8)
|
||||
- ``item,focused`` - When the genlist item has received focus. (since 1.10)
|
||||
- ``item,unfocused`` - When the genlist item has lost focus. (since 1.10)
|
||||
- ``changed`` - Genlist is now changed their items and properties and all
|
||||
calculation is finished. (since 1.16)
|
||||
- ``filter,done`` - Genlist filter operation is completed.. (since 1.17)
|
||||
|
||||
|
||||
Enumerations
|
||||
------------
|
||||
============
|
||||
|
||||
.. _Elm_Genlist_Item_Type:
|
||||
|
||||
Genlist item types
|
||||
==================
|
||||
------------------
|
||||
|
||||
.. data:: ELM_GENLIST_ITEM_NONE
|
||||
|
||||
|
@ -399,7 +376,7 @@ Genlist item types
|
|||
.. _Elm_Genlist_Item_Field_Type:
|
||||
|
||||
Genlist items' field types
|
||||
==========================
|
||||
--------------------------
|
||||
|
||||
.. data:: ELM_GENLIST_ITEM_FIELD_ALL
|
||||
|
||||
|
@ -421,7 +398,7 @@ Genlist items' field types
|
|||
.. _Elm_Genlist_Item_Scrollto_Type:
|
||||
|
||||
Genlist items' scroll-to types
|
||||
==============================
|
||||
------------------------------
|
||||
|
||||
.. data:: ELM_GENLIST_ITEM_SCROLLTO_NONE
|
||||
|
||||
|
@ -439,288 +416,23 @@ Genlist items' scroll-to types
|
|||
|
||||
Scroll to the middle of viewport
|
||||
|
||||
.. data:: ELM_GENLIST_ITEM_SCROLLTO_BOTTTOM
|
||||
|
||||
.. _Elm_Genlist_List_Mode:
|
||||
Scroll to the bottom of viewport
|
||||
|
||||
List sizing
|
||||
===========
|
||||
.. versionadded:: 1.17
|
||||
|
||||
.. data:: ELM_LIST_COMPRESS
|
||||
|
||||
The list won't set any of its size hints to inform how a possible container
|
||||
should resize it.
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
Then, if it's not created as a "resize object", it might end with zeroed
|
||||
dimensions. The list will respect the container's geometry and, if any of
|
||||
its items won't fit into its transverse axis, one won't be able to scroll it
|
||||
in that direction.
|
||||
.. inheritance-diagram::
|
||||
Genlist
|
||||
GenlistItem
|
||||
GenlistItemClass
|
||||
:parts: 2
|
||||
|
||||
.. data:: ELM_LIST_SCROLL
|
||||
|
||||
Default value.
|
||||
|
||||
This is the same as ELM_LIST_COMPRESS, with the exception that if any of
|
||||
its items won't fit into its transverse axis, one will be able to scroll
|
||||
it in that direction.
|
||||
|
||||
.. data:: ELM_LIST_LIMIT
|
||||
|
||||
Sets a minimum size hint on the list object, so that containers may
|
||||
respect it (and resize itself to fit the child properly).
|
||||
|
||||
More specifically, a minimum size hint will be set for its transverse
|
||||
axis, so that the largest item in that direction fits well. This is
|
||||
naturally bound by the list object's maximum size hints, set externally.
|
||||
|
||||
.. data:: ELM_LIST_EXPAND
|
||||
|
||||
Besides setting a minimum size on the transverse axis, just like on
|
||||
ELM_LIST_LIMIT, the list will set a minimum size on the longitudinal
|
||||
axis, trying to reserve space to all its children to be visible at a time.
|
||||
|
||||
This is naturally bound by the list object's maximum size hints, set
|
||||
externally.
|
||||
|
||||
|
||||
.. _Elm_Genlist_Object_Select_Mode:
|
||||
|
||||
Selection modes
|
||||
===============
|
||||
|
||||
.. data:: ELM_OBJECT_SELECT_MODE_DEFAULT
|
||||
|
||||
Default select mode
|
||||
|
||||
.. data:: ELM_OBJECT_SELECT_MODE_ALWAYS
|
||||
|
||||
Always select mode
|
||||
|
||||
.. data:: ELM_OBJECT_SELECT_MODE_NONE
|
||||
|
||||
No select mode
|
||||
|
||||
.. data:: ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY
|
||||
|
||||
No select mode with no finger size rule
|
||||
|
||||
|
||||
"""
|
||||
|
||||
include "tooltips.pxi"
|
||||
|
||||
from cpython cimport PyUnicode_AsUTF8String, Py_DECREF, Py_INCREF
|
||||
from libc.stdint cimport uintptr_t
|
||||
|
||||
from efl.utils.conversions cimport _ctouni
|
||||
from efl.evas cimport Object as evasObject
|
||||
|
||||
from efl.utils.deprecated cimport DEPRECATED
|
||||
from scroller cimport elm_scroller_policy_get, elm_scroller_policy_set, \
|
||||
elm_scroller_bounce_get, elm_scroller_bounce_set, Elm_Scroller_Policy
|
||||
|
||||
from object_item cimport ObjectItem, _object_item_to_python, \
|
||||
elm_object_item_widget_get, _object_item_from_python, \
|
||||
_object_item_list_to_python, elm_object_item_data_get
|
||||
from libc.string cimport strdup
|
||||
from object cimport Object
|
||||
|
||||
from general cimport PY_EFL_ELM_LOG_DOMAIN
|
||||
from efl.eina cimport EINA_LOG_DOM_DBG, EINA_LOG_DOM_INFO, EINA_LOG_DOM_WARN, \
|
||||
EINA_LOG_DOM_ERR, EINA_LOG_DOM_CRIT
|
||||
|
||||
cimport enums
|
||||
|
||||
import traceback
|
||||
import logging
|
||||
|
||||
ELM_GENLIST_ITEM_NONE = enums.ELM_GENLIST_ITEM_NONE
|
||||
ELM_GENLIST_ITEM_TREE = enums.ELM_GENLIST_ITEM_TREE
|
||||
ELM_GENLIST_ITEM_GROUP = enums.ELM_GENLIST_ITEM_GROUP
|
||||
ELM_GENLIST_ITEM_MAX = enums.ELM_GENLIST_ITEM_MAX
|
||||
|
||||
ELM_GENLIST_ITEM_FIELD_ALL = enums.ELM_GENLIST_ITEM_FIELD_ALL
|
||||
ELM_GENLIST_ITEM_FIELD_TEXT = enums.ELM_GENLIST_ITEM_FIELD_TEXT
|
||||
ELM_GENLIST_ITEM_FIELD_CONTENT = enums.ELM_GENLIST_ITEM_FIELD_CONTENT
|
||||
ELM_GENLIST_ITEM_FIELD_STATE = enums.ELM_GENLIST_ITEM_FIELD_STATE
|
||||
|
||||
ELM_GENLIST_ITEM_SCROLLTO_NONE = enums.ELM_GENLIST_ITEM_SCROLLTO_NONE
|
||||
ELM_GENLIST_ITEM_SCROLLTO_IN = enums.ELM_GENLIST_ITEM_SCROLLTO_IN
|
||||
ELM_GENLIST_ITEM_SCROLLTO_TOP = enums.ELM_GENLIST_ITEM_SCROLLTO_TOP
|
||||
ELM_GENLIST_ITEM_SCROLLTO_MIDDLE = enums.ELM_GENLIST_ITEM_SCROLLTO_MIDDLE
|
||||
|
||||
ELM_LIST_COMPRESS = enums.ELM_LIST_COMPRESS
|
||||
ELM_LIST_SCROLL = enums.ELM_LIST_SCROLL
|
||||
ELM_LIST_LIMIT = enums.ELM_LIST_LIMIT
|
||||
ELM_LIST_EXPAND = enums.ELM_LIST_EXPAND
|
||||
|
||||
ELM_OBJECT_SELECT_MODE_DEFAULT = enums.ELM_OBJECT_SELECT_MODE_DEFAULT
|
||||
ELM_OBJECT_SELECT_MODE_ALWAYS = enums.ELM_OBJECT_SELECT_MODE_ALWAYS
|
||||
ELM_OBJECT_SELECT_MODE_NONE = enums.ELM_OBJECT_SELECT_MODE_NONE
|
||||
ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY = enums.ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY
|
||||
ELM_OBJECT_SELECT_MODE_MAX = enums.ELM_OBJECT_SELECT_MODE_MAX
|
||||
|
||||
ELM_SEL_FORMAT_TARGETS = enums.ELM_SEL_FORMAT_TARGETS
|
||||
ELM_SEL_FORMAT_NONE = enums.ELM_SEL_FORMAT_NONE
|
||||
ELM_SEL_FORMAT_TEXT = enums.ELM_SEL_FORMAT_TEXT
|
||||
ELM_SEL_FORMAT_MARKUP = enums.ELM_SEL_FORMAT_MARKUP
|
||||
ELM_SEL_FORMAT_IMAGE = enums.ELM_SEL_FORMAT_IMAGE
|
||||
ELM_SEL_FORMAT_VCARD = enums.ELM_SEL_FORMAT_VCARD
|
||||
ELM_SEL_FORMAT_HTML = enums.ELM_SEL_FORMAT_HTML
|
||||
|
||||
ELM_SEL_TYPE_PRIMARY = enums.ELM_SEL_TYPE_PRIMARY
|
||||
ELM_SEL_TYPE_SECONDARY = enums.ELM_SEL_TYPE_SECONDARY
|
||||
ELM_SEL_TYPE_XDND = enums.ELM_SEL_TYPE_XDND
|
||||
ELM_SEL_TYPE_CLIPBOARD = enums.ELM_SEL_TYPE_CLIPBOARD
|
||||
|
||||
def _cb_object_item_conv(uintptr_t addr):
|
||||
cdef Elm_Object_Item *it = <Elm_Object_Item *>addr
|
||||
return _object_item_to_python(it)
|
||||
|
||||
cdef char *_py_elm_genlist_item_text_get(void *data, Evas_Object *obj, const char *part) with gil:
|
||||
cdef:
|
||||
GenlistItem item = <GenlistItem>data
|
||||
unicode u = _ctouni(part)
|
||||
|
||||
func = item.item_class._text_get_func
|
||||
if func is None:
|
||||
return NULL
|
||||
|
||||
try:
|
||||
o = object_from_instance(obj)
|
||||
ret = func(o, u, item.item_data)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return NULL
|
||||
|
||||
if ret is not None:
|
||||
if isinstance(ret, unicode): ret = PyUnicode_AsUTF8String(ret)
|
||||
return strdup(ret)
|
||||
else:
|
||||
return NULL
|
||||
|
||||
cdef Evas_Object *_py_elm_genlist_item_content_get(void *data, Evas_Object *obj, const char *part) with gil:
|
||||
cdef:
|
||||
GenlistItem item = <GenlistItem>data
|
||||
unicode u = _ctouni(part)
|
||||
evasObject icon
|
||||
|
||||
func = item.item_class._content_get_func
|
||||
if func is None:
|
||||
return NULL
|
||||
|
||||
o = object_from_instance(obj)
|
||||
|
||||
try:
|
||||
icon = func(o, u, item.item_data)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return NULL
|
||||
|
||||
if icon is not None:
|
||||
return icon.obj
|
||||
else:
|
||||
return NULL
|
||||
|
||||
cdef Eina_Bool _py_elm_genlist_item_state_get(void *data, Evas_Object *obj, const char *part) with gil:
|
||||
cdef:
|
||||
GenlistItem item = <GenlistItem>data
|
||||
unicode u = _ctouni(part)
|
||||
|
||||
func = item.item_class._state_get_func
|
||||
if func is None:
|
||||
return 0
|
||||
|
||||
try:
|
||||
o = object_from_instance(obj)
|
||||
ret = func(o, u, item.item_data)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return 0
|
||||
|
||||
return ret if ret is not None else 0
|
||||
|
||||
cdef void _py_elm_genlist_object_item_del(void *data, Evas_Object *obj) with gil:
|
||||
cdef GenlistItem item = <GenlistItem>data
|
||||
|
||||
if item is None:
|
||||
return
|
||||
|
||||
func = item.item_class._del_func
|
||||
|
||||
if func is not None:
|
||||
try:
|
||||
o = object_from_instance(obj)
|
||||
func(o, item.item_data)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
item._unset_obj()
|
||||
|
||||
cdef void _py_elm_genlist_item_func(void *data, Evas_Object *obj, void *event_info) with gil:
|
||||
cdef GenlistItem item
|
||||
|
||||
assert data != NULL, "data is NULL in Genlist select cb"
|
||||
|
||||
item = <GenlistItem>data
|
||||
|
||||
if item.cb_func is not None:
|
||||
try:
|
||||
o = object_from_instance(obj)
|
||||
item.cb_func(item, o, item.func_data)
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
|
||||
cdef int _py_elm_genlist_compare_func(const void *data1, const void *data2) with gil:
|
||||
cdef:
|
||||
Elm_Object_Item *citem1 = <Elm_Object_Item *>data1
|
||||
Elm_Object_Item *citem2 = <Elm_Object_Item *>data2
|
||||
GenlistItem item1 = <GenlistItem>elm_object_item_data_get(citem1)
|
||||
GenlistItem item2 = <GenlistItem>elm_object_item_data_get(citem2)
|
||||
object func
|
||||
|
||||
if item1.comparison_func is not None:
|
||||
func = item1.comparison_func
|
||||
elif item2.comparison_func is not None:
|
||||
func = item2.comparison_func
|
||||
else:
|
||||
return 0
|
||||
|
||||
ret = func(item1, item2)
|
||||
if ret is not None:
|
||||
try:
|
||||
return ret
|
||||
except Exception:
|
||||
traceback.print_exc()
|
||||
return 0
|
||||
else:
|
||||
return 0
|
||||
|
||||
cdef class GenlistIterator(object):
|
||||
cdef:
|
||||
Elm_Object_Item *current_item
|
||||
GenlistItem ret
|
||||
|
||||
def __cinit__(self, Genlist gl):
|
||||
self.current_item = elm_genlist_first_item_get(gl.obj)
|
||||
|
||||
def __next__(self):
|
||||
if self.current_item == NULL:
|
||||
raise StopIteration
|
||||
ret = _object_item_to_python(self.current_item)
|
||||
self.current_item = elm_genlist_item_next_get(self.current_item)
|
||||
return ret
|
||||
|
||||
class GenlistItemsCount(int):
|
||||
def __new__(cls, Object obj, int count):
|
||||
return int.__new__(cls, count)
|
||||
|
||||
def __init__(self, Object obj, int count):
|
||||
self.obj = obj
|
||||
|
||||
@DEPRECATED("1.8", "Use items_count instead.")
|
||||
def __call__(self):
|
||||
return self.obj._items_count()
|
||||
|
||||
include "genlist_item_class.pxi"
|
||||
include "genlist_item.pxi"
|
||||
include "genlist_widget.pxi"
|
||||
.. autoclass:: Genlist
|
||||
.. autoclass:: GenlistItem
|
||||
.. autoclass:: GenlistItemClass
|
|
@ -0,0 +1,152 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Gesture Layer
|
||||
#############
|
||||
|
||||
.. image:: /images/gesturelayer-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
Use the GestureLayer to detect gestures. The advantage is that you don't
|
||||
have to implement gesture detection, just set callbacks for gesture states.
|
||||
|
||||
In order to use Gesture Layer you start with instantiating this class
|
||||
with a parent object parameter. Next 'activate' gesture layer with a
|
||||
:py:meth:`~GestureLayer.attach` call. Usually with same object as target (2nd
|
||||
parameter).
|
||||
|
||||
Now you need to tell gesture layer what gestures you follow. This is done with
|
||||
:py:meth:`~GestureLayer.cb_set` call. By setting the callback you actually
|
||||
saying to gesture layer: I would like to know when the gesture
|
||||
:ref:`Elm_Gesture_Type` switches to state :ref:`Elm_Gesture_State`.
|
||||
|
||||
Next, you need to implement the actual action that follows the input in
|
||||
your callback.
|
||||
|
||||
Note that if you like to stop being reported about a gesture, just set
|
||||
all callbacks referring this gesture to None. (again with
|
||||
:py:meth:`~GestureLayer.cb_set`)
|
||||
|
||||
The information reported by gesture layer to your callback is depending
|
||||
on :ref:`Elm_Gesture_Type`:
|
||||
|
||||
- :class:`GestureTapsInfo` is the info reported for tap gestures:
|
||||
|
||||
- :attr:`ELM_GESTURE_N_TAPS`
|
||||
- :attr:`ELM_GESTURE_N_LONG_TAPS`
|
||||
- :attr:`ELM_GESTURE_N_DOUBLE_TAPS`
|
||||
- :attr:`ELM_GESTURE_N_TRIPLE_TAPS`
|
||||
|
||||
- :class:`GestureMomentumInfo` is info reported for momentum gestures:
|
||||
|
||||
- :attr:`ELM_GESTURE_MOMENTUM`
|
||||
|
||||
- :class:`GestureLineInfo` is the info reported for line gestures
|
||||
(this also contains :class:`GestureMomentumInfo` internal structure):
|
||||
|
||||
- :attr:`ELM_GESTURE_N_LINES`
|
||||
- :attr:`ELM_GESTURE_N_FLICKS`
|
||||
|
||||
Note that we consider a flick as a line-gesture that should be completed
|
||||
in flick-time-limit as defined in
|
||||
:py:class:`~efl.elementary.configuration.Configuration`.
|
||||
|
||||
:class:`GestureZoomInfo` is the info reported for :attr:`ELM_GESTURE_ZOOM`
|
||||
gesture.
|
||||
|
||||
:class:`GestureRotateInfo` is the info reported for
|
||||
:attr:`ELM_GESTURE_ROTATE` gesture.
|
||||
|
||||
Gesture Layer Tweaks:
|
||||
|
||||
Note that line, flick, gestures can start without the need to remove
|
||||
fingers from surface. When user fingers rests on same-spot gesture is
|
||||
ended and starts again when fingers moved.
|
||||
|
||||
Setting glayer_continues_enable to false in
|
||||
:py:class:`~efl.elementary.configuration.Configuration` will change this
|
||||
behavior so gesture starts when user touches (a *DOWN* event)
|
||||
touch-surface and ends when no fingers touches surface (a *UP* event).
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Gesture_State:
|
||||
|
||||
Gesture states
|
||||
--------------
|
||||
|
||||
.. data:: ELM_GESTURE_STATE_UNDEFINED
|
||||
|
||||
Gesture not started
|
||||
|
||||
.. data:: ELM_GESTURE_STATE_START
|
||||
|
||||
Gesture started
|
||||
|
||||
.. data:: ELM_GESTURE_STATE_MOVE
|
||||
|
||||
Gesture is ongoing
|
||||
|
||||
.. data:: ELM_GESTURE_STATE_END
|
||||
|
||||
Gesture completed
|
||||
|
||||
.. data:: ELM_GESTURE_STATE_ABORT
|
||||
|
||||
Ongoing gesture was aborted
|
||||
|
||||
|
||||
.. _Elm_Gesture_Type:
|
||||
|
||||
Gesture types
|
||||
-------------
|
||||
|
||||
.. data:: ELM_GESTURE_N_TAPS
|
||||
|
||||
N fingers single taps
|
||||
|
||||
.. data:: ELM_GESTURE_N_LONG_TAPS
|
||||
|
||||
N fingers single long-taps
|
||||
|
||||
.. data:: ELM_GESTURE_N_DOUBLE_TAPS
|
||||
|
||||
N fingers double-single taps
|
||||
|
||||
.. data:: ELM_GESTURE_N_TRIPLE_TAPS
|
||||
|
||||
N fingers triple-single taps
|
||||
|
||||
.. data:: ELM_GESTURE_MOMENTUM
|
||||
|
||||
Reports momentum in the direction of move
|
||||
|
||||
.. data:: ELM_GESTURE_N_LINES
|
||||
|
||||
N fingers line gesture
|
||||
|
||||
.. data:: ELM_GESTURE_N_FLICKS
|
||||
|
||||
N fingers flick gesture
|
||||
|
||||
.. data:: ELM_GESTURE_ZOOM
|
||||
|
||||
Zoom
|
||||
|
||||
.. data:: ELM_GESTURE_ROTATE
|
||||
|
||||
Rotate
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: GestureLayer
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: GestureLayer
|
|
@ -0,0 +1,33 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Grid
|
||||
####
|
||||
|
||||
.. image:: /images/grid-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
A grid layout widget.
|
||||
|
||||
The grid is a grid layout widget that lays out a series of children as a
|
||||
fixed "grid" of widgets using a given percentage of the grid width and
|
||||
height each using the child object.
|
||||
|
||||
The Grid uses a "Virtual resolution" that is stretched to fill the grid
|
||||
widgets size itself. The default is 100 x 100, so that means the
|
||||
position and sizes of children will effectively be percentages (0 to 100)
|
||||
of the width or height of the grid widget.
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Grid
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Grid
|
||||
.. autofunction:: grid_pack_set
|
||||
.. autofunction:: grid_pack_get
|
|
@ -0,0 +1,109 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Hover
|
||||
#####
|
||||
|
||||
.. image:: /images/hover-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
A Hover object will hover over its ``parent`` object at the ``target``
|
||||
location.
|
||||
|
||||
Anything in the background will be given a darker coloring to indicate
|
||||
that the hover object is on top (at the default theme). When the hover
|
||||
is clicked it is dismissed(hidden), if the contents of the hover are
|
||||
clicked that **doesn't** cause the hover to be dismissed.
|
||||
|
||||
A Hover object has two parents. One parent that owns it during creation
|
||||
and the other parent being the one over which the hover object spans.
|
||||
|
||||
|
||||
Available styles
|
||||
================
|
||||
|
||||
- default
|
||||
- popout
|
||||
- menu
|
||||
- hoversel_vertical
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``clicked`` - the user clicked the empty space in the hover to
|
||||
dismiss.
|
||||
- ``dismissed`` - the user clicked the empty space in the hover to dismiss.
|
||||
(since 1.8)
|
||||
- ``smart,changed`` - a content object placed under the "smart"
|
||||
policy was replaced to a new slot direction.
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``left``
|
||||
- ``top-left``
|
||||
- ``top``
|
||||
- ``top-right``
|
||||
- ``right``
|
||||
- ``bottom-right``
|
||||
- ``bottom``
|
||||
- ``bottom-left``
|
||||
- ``middle``
|
||||
- ``smart``
|
||||
|
||||
All directions may have contents at the same time, except for "smart".
|
||||
This is a special placement hint and its use case depends of the
|
||||
calculations coming from :py:meth:`~Hover.best_content_location_get`. Its use
|
||||
is for cases when one desires only one hover content, but with a dynamic
|
||||
special placement within the hover area. The content's geometry,
|
||||
whenever it changes, will be used to decide on a best location, not
|
||||
extrapolating the hover's parent object view to show it in (still being
|
||||
the hover's target determinant of its medium part -- move and resize it
|
||||
to simulate finger sizes, for example). If one of the directions other
|
||||
than "smart" are used, a previously content set using it will be
|
||||
deleted, and vice-versa.
|
||||
|
||||
.. note:: The hover object will take up the entire space of ``target``
|
||||
object.
|
||||
|
||||
.. note:: The content parts listed indicate the direction that the content
|
||||
will be displayed
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Hover_Axis:
|
||||
|
||||
Hover axis
|
||||
----------
|
||||
|
||||
.. data:: ELM_HOVER_AXIS_NONE
|
||||
|
||||
No preferred orientation
|
||||
|
||||
.. data:: ELM_HOVER_AXIS_HORIZONTAL
|
||||
|
||||
Horizontal orientation
|
||||
|
||||
.. data:: ELM_HOVER_AXIS_VERTICAL
|
||||
|
||||
Vertical orientation
|
||||
|
||||
.. data:: ELM_HOVER_AXIS_BOTH
|
||||
|
||||
Both
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Hover
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Hover
|
|
@ -0,0 +1,56 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Hoversel
|
||||
########
|
||||
|
||||
.. image:: /images/hoversel-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
A hoversel is a button that pops up a list of items (automatically
|
||||
choosing the direction to display) that have a label and, optionally, an
|
||||
icon to select from.
|
||||
|
||||
It is a convenience widget to avoid the need to do all the piecing
|
||||
together yourself. It is intended for a small number of items in the
|
||||
hoversel menu (no more than 8), though is capable of many more.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``clicked`` - the user clicked the hoversel button and popped up
|
||||
the sel
|
||||
- ``selected`` - an item in the hoversel list is selected. event_info
|
||||
is the item
|
||||
- ``dismissed`` - the hover is dismissed
|
||||
- ``expanded`` - the hover is expanded (since 1.9)
|
||||
- ``item,focused`` - the hoversel item has received focus. (since 1.10)
|
||||
- ``item,unfocused`` - the hoversel item has lost focus. (since 1.10)
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``icon`` - An icon of the hoversel
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - Label of the hoversel
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram::
|
||||
Hoversel
|
||||
HoverselItem
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Hoversel
|
||||
.. autoclass:: HoverselItem
|
|
@ -0,0 +1,183 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Icon
|
||||
####
|
||||
|
||||
.. image:: /images/icon-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
An icon object is used to display standard icon images ("delete",
|
||||
"edit", "arrows", etc.) or images coming from a custom file (PNG, JPG,
|
||||
EDJE, etc.), on icon contexts.
|
||||
|
||||
The icon image requested can be in the Elementary theme in use, or in
|
||||
the ``freedesktop.org`` theme paths. It's possible to set the order of
|
||||
preference from where an image will be fetched.
|
||||
|
||||
This widget inherits from the :py:class:`~efl.elementary.image.Image` one, so
|
||||
that all the functions acting on it also work for icon objects.
|
||||
|
||||
You should be using an icon, instead of an image, whenever one of the
|
||||
following apply:
|
||||
|
||||
- you need a **thumbnail** version of an original image
|
||||
- you need freedesktop.org provided icon images
|
||||
- you need theme provided icon images (Edje groups)
|
||||
|
||||
Default images provided by Elementary's default theme are described below.
|
||||
|
||||
These are names that follow (more or less) the **Freedesktop** icon naming
|
||||
specification. Use of these names are **preferred**, at least if you want to
|
||||
give your user the ability to use other themes. All these icons can be
|
||||
seen in the elementary_test application, the test is called "Icon Standard".
|
||||
|
||||
- ``folder`` (since 1.13)
|
||||
- ``user-home`` (since 1.13)
|
||||
- ``user-trash`` (since 1.13)
|
||||
|
||||
- ``view-close`` (since 1.13)
|
||||
- ``view-refresh`` (since 1.13)
|
||||
|
||||
- ``window-close`` 1.13)
|
||||
|
||||
- ``document-close`` (since 1.13)
|
||||
- ``document-edit`` (since 1.13)
|
||||
|
||||
- ``dialog-info`` (since 1.13)
|
||||
- ``dialog-close`` (since 1.13)
|
||||
|
||||
- ``arrow-up`` (since 1.13)
|
||||
- ``arrow-down`` (since 1.13)
|
||||
- ``arrow-left`` (since 1.13)
|
||||
- ``arrow-right`` (since 1.13)
|
||||
- ``arrow-up-left`` (since 1.13)
|
||||
- ``arrow-up-right`` (since 1.13)
|
||||
- ``arrow-down-left`` (since 1.13)
|
||||
- ``arrow-down-right`` (since 1.13)
|
||||
|
||||
- ``edit-delete`` (since 1.13)
|
||||
|
||||
- ``application-chat`` (since 1.13)
|
||||
- ``application-clock`` (since 1.13)
|
||||
|
||||
- ``media-seek-forward`` 1.13)
|
||||
- ``media-seek-backward`` (since 1.13)
|
||||
- ``media-skip-forward`` (since 1.13)
|
||||
- ``media-skip-backward`` (since 1.13)
|
||||
- ``media-playback-pause`` (since 1.13)
|
||||
- ``media-playback-start`` (since 1.13)
|
||||
- ``media-playback-stop`` (since 1.13)
|
||||
- ``media-eject`` (since 1.13)
|
||||
|
||||
- ``audio-volume`` (since 1.13)
|
||||
- ``audio-volume-muted`` (since 1.13)
|
||||
|
||||
These are names for icons that were first intended to be used in
|
||||
toolbars, but can be used in many other places too:
|
||||
|
||||
- ``home``
|
||||
- ``close``
|
||||
- ``apps``
|
||||
- ``arrow_up``
|
||||
- ``arrow_down``
|
||||
- ``arrow_left``
|
||||
- ``arrow_right``
|
||||
- ``chat``
|
||||
- ``clock``
|
||||
- ``delete``
|
||||
- ``edit``
|
||||
- ``refresh``
|
||||
- ``folder``
|
||||
- ``file``
|
||||
|
||||
These are names for icons that were designed to be used in menus
|
||||
(but again, you can use them anywhere else):
|
||||
|
||||
- ``menu/home``
|
||||
- ``menu/close``
|
||||
- ``menu/apps``
|
||||
- ``menu/arrow_up``
|
||||
- ``menu/arrow_down``
|
||||
- ``menu/arrow_left``
|
||||
- ``menu/arrow_right``
|
||||
- ``menu/chat``
|
||||
- ``menu/clock``
|
||||
- ``menu/delete``
|
||||
- ``menu/edit``
|
||||
- ``menu/refresh``
|
||||
- ``menu/folder``
|
||||
- ``menu/file``
|
||||
|
||||
And these are names for some media player specific icons:
|
||||
|
||||
- ``media_player/forward``
|
||||
- ``media_player/info``
|
||||
- ``media_player/next``
|
||||
- ``media_player/pause``
|
||||
- ``media_player/play``
|
||||
- ``media_player/prev``
|
||||
- ``media_player/rewind``
|
||||
- ``media_player/stop``
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``thumb,done`` - Setting :py:attr:`~Icon.thumb` has completed with success
|
||||
- ``thumb,error`` - Setting :py:attr:`~Icon.thumb` has failed
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Icon_Lookup_Order:
|
||||
|
||||
Icon lookup modes
|
||||
-----------------
|
||||
|
||||
.. data:: ELM_ICON_LOOKUP_FDO_THEME
|
||||
|
||||
freedesktop, theme
|
||||
|
||||
.. data:: ELM_ICON_LOOKUP_THEME_FDO
|
||||
|
||||
theme, freedesktop
|
||||
|
||||
.. data:: ELM_ICON_LOOKUP_FDO
|
||||
|
||||
freedesktop
|
||||
|
||||
.. data:: ELM_ICON_LOOKUP_THEME
|
||||
|
||||
theme
|
||||
|
||||
|
||||
.. _Elm_Icon_Type:
|
||||
|
||||
Icon type
|
||||
---------
|
||||
|
||||
.. data:: ELM_ICON_NONE
|
||||
|
||||
No icon
|
||||
|
||||
.. data:: ELM_ICON_FILE
|
||||
|
||||
Icon is a file
|
||||
|
||||
.. data:: ELM_ICON_STANDARD
|
||||
|
||||
Icon is set with standards name
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Icon
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Icon
|
|
@ -0,0 +1,102 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Image
|
||||
#####
|
||||
|
||||
.. image:: /images/image-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
An Elementary image object allows one to load and display an image
|
||||
file on it, be it from a disk file or from a memory region.
|
||||
|
||||
Exceptionally, one may also load an Edje group as the contents of the
|
||||
image. In this case, though, most of the functions of the image API will
|
||||
act as a no-op.
|
||||
|
||||
One can tune various properties of the image, like:
|
||||
|
||||
- pre-scaling,
|
||||
- smooth scaling,
|
||||
- orientation,
|
||||
- aspect ratio during resizes, etc.
|
||||
|
||||
An image object may also be made valid source and destination for drag
|
||||
and drop actions by setting :py:attr:`~Image.editable`.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``drop`` - This is called when a user has dropped an image
|
||||
typed object onto the object in question -- the
|
||||
event info argument is the path to that image file
|
||||
- ``clicked`` - This is called when a user has clicked the image
|
||||
- ``download,start`` - remote url download has started
|
||||
- ``download,progress`` - url download in progress
|
||||
- ``download,end`` - remote url download has finished
|
||||
- ``download,error`` - remote url download has finished with errors
|
||||
- ``load,open`` - Triggered when the file has been opened, if async open is
|
||||
enabled (image size is known). (since 1.19)
|
||||
- ``load,ready`` - Triggered when the image file is ready for display, if
|
||||
preload is enabled. (since 1.19)
|
||||
- ``load,error`` - Triggered if an async I/O or decoding error occurred, if
|
||||
async open or preload is enabled (since 1.19)
|
||||
- ``load,cancel`` - Triggered whenener async I/O was cancelled. (since 1.19)
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Image_Orient:
|
||||
|
||||
Image manipulation types
|
||||
------------------------
|
||||
|
||||
.. data:: ELM_IMAGE_ORIENT_NONE
|
||||
|
||||
No orientation change
|
||||
|
||||
.. data:: ELM_IMAGE_ORIENT_0
|
||||
|
||||
No orientation change
|
||||
|
||||
.. data:: ELM_IMAGE_ROTATE_90
|
||||
|
||||
Rotate 90 degrees clockwise
|
||||
|
||||
.. data:: ELM_IMAGE_ROTATE_180
|
||||
|
||||
Rotate 180 degrees clockwise
|
||||
|
||||
.. data:: ELM_IMAGE_ROTATE_270
|
||||
|
||||
Rotate 270 degrees clockwise
|
||||
|
||||
.. data:: ELM_IMAGE_FLIP_HORIZONTAL
|
||||
|
||||
Flip the image horizontally
|
||||
|
||||
.. data:: ELM_IMAGE_FLIP_VERTICAL
|
||||
|
||||
Flip the image vertically
|
||||
|
||||
.. data:: ELM_IMAGE_FLIP_TRANSPOSE
|
||||
|
||||
Flip the image along the y = (width - x) line (bottom-left to top-right)
|
||||
|
||||
.. data:: ELM_IMAGE_FLIP_TRANSVERSE
|
||||
|
||||
Flip the image along the y = x line (top-left to bottom-right)
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Image
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Image
|
|
@ -0,0 +1,61 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Index
|
||||
#####
|
||||
|
||||
.. image:: /images/index-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
An index widget gives you an index for fast access to whichever
|
||||
group of other UI items one might have.
|
||||
|
||||
It's a list of text items (usually letters, for alphabetically ordered
|
||||
access).
|
||||
|
||||
Index widgets are by default hidden and just appear when the
|
||||
user clicks over it's reserved area in the canvas. In its
|
||||
default theme, it's an area one ``finger`` wide on
|
||||
the right side of the index widget's container.
|
||||
|
||||
When items on the index are selected, smart callbacks get called, so that its
|
||||
user can make other container objects to show a given area or child object
|
||||
depending on the index item selected. You'd probably be using an index together
|
||||
with :py:class:`~efl.elementary.list.List`,
|
||||
:py:class:`~efl.elementary.genlist.Genlist` or
|
||||
:py:class:`~efl.elementary.gengrid.Gengrid`.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``changed`` - When the selected index item changes. ``event_info``
|
||||
is the selected item's data.
|
||||
- ``delay,changed`` - When the selected index item changes, but
|
||||
after a small idling period. ``event_info`` is the selected
|
||||
item's data.
|
||||
- ``selected`` - When the user releases a mouse button and
|
||||
selects an item. ``event_info`` is the selected item's data.
|
||||
- ``level,up`` - when the user moves a finger from the first
|
||||
level to the second level
|
||||
- ``level,down`` - when the user moves a finger from the second
|
||||
level to the first level
|
||||
|
||||
The ``delay,changed`` event has a delay on change before the event is actually
|
||||
reported and moreover just the last event happening on those time frames will
|
||||
actually be reported.
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram::
|
||||
Index
|
||||
IndexItem
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Index
|
||||
.. autoclass:: IndexItem
|
|
@ -0,0 +1,42 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Innerwindow
|
||||
###########
|
||||
|
||||
.. image:: /images/innerwindow-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
An inwin is a window inside a window that is useful for a quick popup.
|
||||
It does not hover.
|
||||
|
||||
It works by creating an object that will occupy the entire window, so it must be
|
||||
created using an :py:class:`~efl.elementary.window.Window` as parent only. The
|
||||
inwin object can be hidden or restacked below every other object if it's needed
|
||||
to show what's behind it without destroying it. If this is done, the
|
||||
:py:meth:`~InnerWindow.activate` function can be used to bring it back to full
|
||||
visibility again.
|
||||
|
||||
|
||||
Available styles
|
||||
================
|
||||
|
||||
- ``default`` The inwin is sized to take over most of the window it's
|
||||
placed in.
|
||||
- ``minimal`` The size of the inwin will be the minimum necessary to show
|
||||
its contents.
|
||||
- ``minimal_vertical`` Horizontally, the inwin takes as much space as
|
||||
possible, but it's sized vertically the most it needs to fit its
|
||||
contents.
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: InnerWindow
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: InnerWindow
|
|
@ -0,0 +1,85 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Label
|
||||
#####
|
||||
|
||||
.. image:: /images/label-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
Widget to display text, with simple html-like markup.
|
||||
|
||||
The Label widget **doesn't** allow text to overflow its boundaries, if the
|
||||
text doesn't fit the geometry of the label it will be ellipsized or be
|
||||
cut.
|
||||
|
||||
|
||||
Available styles
|
||||
================
|
||||
|
||||
``default``
|
||||
The default style
|
||||
``default/left``
|
||||
Left aligned label (since 1.18)
|
||||
``default/right``
|
||||
Right aligned label (since 1.18)
|
||||
``marker``
|
||||
Centers the text in the label and makes it bold by default
|
||||
``marker/left``
|
||||
Like marker but left aligned (since 1.18)
|
||||
``marker/right``
|
||||
Like marker but right aligned (since 1.18)
|
||||
``slide_long``
|
||||
The entire text appears from the right of the screen and
|
||||
slides until it disappears in the left of the screen(reappearing on
|
||||
the right again).
|
||||
``slide_short``
|
||||
The text appears in the left of the label and slides to
|
||||
the right to show the overflow. When all of the text has been shown
|
||||
the position is reset.
|
||||
``slide_bounce``
|
||||
The text appears in the left of the label and slides to
|
||||
the right to show the overflow. When all of the text has been shown
|
||||
the animation reverses, moving the text to the left.
|
||||
|
||||
Custom themes can of course invent new markup tags and style them any way
|
||||
they like.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``slide,end`` - The slide is end.
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Label_Slide_Mode:
|
||||
|
||||
Slide modes
|
||||
-----------
|
||||
|
||||
.. data:: ELM_LABEL_SLIDE_MODE_NONE
|
||||
|
||||
The label will never slide.
|
||||
|
||||
.. data:: ELM_LABEL_SLIDE_MODE_AUTO
|
||||
|
||||
The label slide if the content is bigger than it's container.
|
||||
|
||||
.. data:: ELM_LABEL_SLIDE_MODE_ALWAYS
|
||||
|
||||
The label will always slide.
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Label
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Label
|
|
@ -1,26 +1,13 @@
|
|||
# Copyright (C) 2007-2014 various contributors (see AUTHORS)
|
||||
#
|
||||
# This file is part of Python-EFL.
|
||||
#
|
||||
# Python-EFL is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 3 of the License, or (at your option) any later version.
|
||||
#
|
||||
# Python-EFL is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with this Python-EFL. If not, see <http://www.gnu.org/licenses/>.
|
||||
.. currentmodule:: efl.elementary
|
||||
|
||||
"""
|
||||
Layout
|
||||
######
|
||||
|
||||
.. image:: /images/layout-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
------------------
|
||||
==================
|
||||
|
||||
This is a container widget that takes a standard Edje design file and
|
||||
wraps it very thinly in a widget.
|
||||
|
@ -46,7 +33,6 @@ part description where they were added. There are 3 possible types of
|
|||
parts where a child can be added:
|
||||
|
||||
Content (SWALLOW part)
|
||||
|
||||
Only one object can be added to the ``SWALLOW`` part (but you still can
|
||||
have many ``SWALLOW`` parts and one object on each of them). Use the
|
||||
``Object.content_set/get/unset`` functions to set, retrieve and unset
|
||||
|
@ -66,7 +52,6 @@ Content (SWALLOW part)
|
|||
changed, it will animate move if the part is moving, and so on.
|
||||
|
||||
Box (BOX part)
|
||||
|
||||
An Edje ``BOX`` part is very similar to the Elementary
|
||||
:py:class:`~efl.elementary.box.Box` widget. It allows one to add objects to
|
||||
the box and have them distributed along its area, accordingly to the
|
||||
|
@ -90,7 +75,6 @@ Box (BOX part)
|
|||
The Layout Box can be used through the ``box_`` set of functions.
|
||||
|
||||
Table (TABLE part)
|
||||
|
||||
Just like the *Box*, the Layout Table is very similar to the Elementary
|
||||
:py:class:`~efl.elementary.table.Table` widget. It allows one to add objects
|
||||
to the Table specifying the row and column where the object should be added,
|
||||
|
@ -113,6 +97,38 @@ some basic functionality depending on the theme used.
|
|||
Most of them already send some signals, some already provide a toolbar or
|
||||
back and next buttons.
|
||||
|
||||
|
||||
Layout Class
|
||||
============
|
||||
|
||||
Elementary, besides having the :py:class:`~efl.elementary.layout.Layout`
|
||||
widget, exposes its foundation -- the Elementary Layout Class -- in
|
||||
order to create other widgets which are, basically, a certain layout
|
||||
with some more logic on top.
|
||||
|
||||
The idea is to make the creation of that widgets as easy as possible,
|
||||
factorizing code on this common base. For example, a button is a layout
|
||||
(that looks like push button) that happens to react on clicks and keyboard
|
||||
events in a special manner, calling its user back on those events. That's no
|
||||
surprise, then, that the :py:class:`~efl.elementary.button.Button`
|
||||
implementation relies on LayoutClass, if you go to check it.
|
||||
|
||||
Container parts, here, map directly to Edje parts from the layout's Edje
|
||||
group. Besides that, there's a whole infrastructure around Edje files:
|
||||
|
||||
- interfacing by signals,
|
||||
- setting/retrieving text part values,
|
||||
- dealing with table and box parts directly,
|
||||
- etc.
|
||||
|
||||
Finally, layout objects will do **part aliasing** for you, if you set
|
||||
it up properly. For that, take a look at
|
||||
Elm_Layout_Part_Alias_Description, where it's explained in detail.
|
||||
|
||||
|
||||
Available styles
|
||||
================
|
||||
|
||||
These are available predefined theme layouts. All of them have class =
|
||||
*layout*, group = *application*, and style = one of the following options:
|
||||
|
||||
|
@ -130,24 +146,19 @@ These are available predefined theme layouts. All of them have class =
|
|||
- ``toolbar-table`` - application with toolbar and main content area as a
|
||||
table
|
||||
|
||||
This widget emits the following signals:
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``theme,changed`` - The theme was changed.
|
||||
- ``language,changed`` - the program's language changed
|
||||
|
||||
"""
|
||||
|
||||
from efl.eo cimport _object_mapping_register
|
||||
from efl.evas cimport Object as evasObject
|
||||
from layout_class cimport LayoutClass
|
||||
|
||||
cdef class Layout(LayoutClass):
|
||||
|
||||
"""This is the class that actually implements the widget."""
|
||||
|
||||
def __init__(self, evasObject parent, *args, **kwargs):
|
||||
self._set_obj(elm_layout_add(parent.obj))
|
||||
self._set_properties_from_keyword_args(kwargs)
|
||||
|
||||
|
||||
_object_mapping_register("Elm_Layout", Layout)
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Layout
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Layout
|
||||
.. autoclass:: LayoutClass
|
|
@ -0,0 +1,134 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
List
|
||||
####
|
||||
|
||||
.. image:: /images/list-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
A list widget is a container whose children are displayed vertically or
|
||||
horizontally, in order, and can be selected.
|
||||
The list can accept only one or multiple items selection. Also has many
|
||||
modes of items displaying.
|
||||
|
||||
A list is a very simple type of list widget. For more robust
|
||||
lists, :py:class:`~efl.elementary.genlist.Genlist` should probably be used.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``activated`` - The user has double-clicked or pressed
|
||||
(enter|return|spacebar) on an item.
|
||||
- ``clicked,double`` - The user has double-clicked an item.
|
||||
- ``clicked,right`` - The user has right-clicked an item. (since: 1.13)
|
||||
- ``selected`` - when the user selected an item
|
||||
- ``unselected`` - when the user unselected an item
|
||||
- ``longpressed`` - an item in the list is long-pressed
|
||||
- ``edge,top`` - the list is scrolled until the top edge
|
||||
- ``edge,bottom`` - the list is scrolled until the bottom edge
|
||||
- ``edge,left`` - the list is scrolled until the left edge
|
||||
- ``edge,right`` - the list is scrolled until the right edge
|
||||
- ``highlighted`` - an item in the list is highlighted. This is called when
|
||||
the user presses an item or keyboard selection is done so the item is
|
||||
physically highlighted.
|
||||
- ``unhighlighted`` - an item in the list is unhighlighted. This is called
|
||||
when the user releases an item or keyboard selection is moved so the item
|
||||
is physically unhighlighted.
|
||||
- ``item,focused`` - When the list item has received focus. (since 1.10)
|
||||
- ``item,unfocused`` - When the list item has lost focus. (since 1.10)
|
||||
|
||||
|
||||
Available styles
|
||||
================
|
||||
|
||||
- ``default``
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``start`` - A start position object in the list item
|
||||
- ``end`` - A end position object in the list item
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - label in the list item
|
||||
|
||||
|
||||
Scrollable Interface
|
||||
====================
|
||||
|
||||
This widget supports the scrollable interface.
|
||||
|
||||
If you wish to control the scolling behaviour using these functions,
|
||||
inherit both the widget class and the
|
||||
:py:class:`~efl.elementary.scroller.Scrollable` class
|
||||
using multiple inheritance, for example::
|
||||
|
||||
class ScrollableGenlist(Genlist, Scrollable):
|
||||
def __init__(self, canvas, *args, **kwargs):
|
||||
Genlist.__init__(self, canvas)
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_List_Mode:
|
||||
|
||||
List sizing modes
|
||||
-----------------
|
||||
|
||||
.. data:: ELM_LIST_COMPRESS
|
||||
|
||||
The list won't set any of its size hints to inform how a possible container
|
||||
should resize it.
|
||||
|
||||
Then, if it's not created as a "resize object", it might end with zeroed
|
||||
dimensions. The list will respect the container's geometry and, if any of
|
||||
its items won't fit into its transverse axis, one won't be able to scroll it
|
||||
in that direction.
|
||||
|
||||
.. data:: ELM_LIST_SCROLL
|
||||
|
||||
Default value.
|
||||
|
||||
This is the same as ELM_LIST_COMPRESS, with the exception that if any of
|
||||
its items won't fit into its transverse axis, one will be able to scroll
|
||||
it in that direction.
|
||||
|
||||
.. data:: ELM_LIST_LIMIT
|
||||
|
||||
Sets a minimum size hint on the list object, so that containers may
|
||||
respect it (and resize itself to fit the child properly).
|
||||
|
||||
More specifically, a minimum size hint will be set for its transverse
|
||||
axis, so that the largest item in that direction fits well. This is
|
||||
naturally bound by the list object's maximum size hints, set externally.
|
||||
|
||||
.. data:: ELM_LIST_EXPAND
|
||||
|
||||
Besides setting a minimum size on the transverse axis, just like on
|
||||
ELM_LIST_LIMIT, the list will set a minimum size on the longitudinal
|
||||
axis, trying to reserve space to all its children to be visible at a time.
|
||||
|
||||
This is naturally bound by the list object's maximum size hints, set
|
||||
externally.
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram::
|
||||
List
|
||||
ListItem
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: List
|
||||
.. autoclass:: ListItem
|
|
@ -0,0 +1,209 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Map
|
||||
###
|
||||
|
||||
.. image:: /images/map-preview.png
|
||||
:width: 100%
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
The *Map* is a widget specifically for displaying a geographic map.
|
||||
It uses `OpenStreetMap <http://www.openstreetmap.org/>`_ as map tile provider,
|
||||
`YOURS <http://www.yournavigation.org/>`_ for routing calculation and
|
||||
`Nominatim <http://nominatim.openstreetmap.org/>`_ to convert geographic
|
||||
coordinates to/from address names. But custom providers can be added.
|
||||
|
||||
It supports some basic but yet nice features:
|
||||
|
||||
- zooming and scrolling
|
||||
- markers with content to be displayed when user clicks over them
|
||||
- automatic grouping of markers based on zoom level
|
||||
- routes calculation
|
||||
- names/coordinates conversion (and viceversa)
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``clicked`` - Called when a user has clicked the map without dragging around.
|
||||
- ``clicked,double`` - Called when a user has double-clicked the map.
|
||||
- ``press`` - This is called when a user has pressed down on the map.
|
||||
- ``longpressed`` - This is called when a user has pressed down on the map
|
||||
for a long time without dragging around.
|
||||
- ``scroll`` - the content has been scrolled (moved).
|
||||
- ``scroll,drag,start`` - dragging the contents around has started.
|
||||
- ``scroll,drag,stop`` - dragging the contents around has stopped.
|
||||
- ``scroll,anim,start`` - scrolling animation has started.
|
||||
- ``scroll,anim,stop`` - scrolling animation has stopped.
|
||||
- ``zoom,start`` - Zoom animation started.
|
||||
- ``zoom,stop`` - Zoom animation stopped.
|
||||
- ``zoom,change`` - Zoom changed when using an auto zoom mode.
|
||||
- ``tile,load`` - A map tile image load begins.
|
||||
- ``tile,loaded`` - A map tile image load ends.
|
||||
- ``tile,loaded,fail`` - A map tile image load fails.
|
||||
- ``route,load`` - Route request begins.
|
||||
- ``route,loaded`` - Route request ends.
|
||||
- ``route,loaded,fail`` - Route request fails.
|
||||
- ``name,load`` - Name request begins.
|
||||
- ``name,loaded`` - Name request ends.
|
||||
- ``name,loaded,fail`` - Name request fails.
|
||||
- ``overlay,clicked`` - A overlay is clicked.
|
||||
- ``loaded`` - when a map is finally loaded.
|
||||
|
||||
|
||||
Scrollable Interface
|
||||
====================
|
||||
|
||||
This widget supports the scrollable interface.
|
||||
|
||||
If you wish to control the scolling behaviour using these functions,
|
||||
inherit both the widget class and the
|
||||
:py:class:`Scrollable<efl.elementary.scroller.Scrollable>` class
|
||||
using multiple inheritance, for example::
|
||||
|
||||
class ScrollableGenlist(Genlist, Scrollable):
|
||||
def __init__(self, canvas, *args, **kwargs):
|
||||
Genlist.__init__(self, canvas)
|
||||
|
||||
|
||||
Enumerations
|
||||
============
|
||||
|
||||
.. _Elm_Map_Overlay_Type:
|
||||
|
||||
Map overlay types
|
||||
-----------------
|
||||
|
||||
.. data:: ELM_MAP_OVERLAY_TYPE_NONE
|
||||
|
||||
None
|
||||
|
||||
.. data:: ELM_MAP_OVERLAY_TYPE_DEFAULT
|
||||
|
||||
The default overlay type.
|
||||
|
||||
.. data:: ELM_MAP_OVERLAY_TYPE_CLASS
|
||||
|
||||
The Class overlay is used to group marker together.
|
||||
|
||||
.. data:: ELM_MAP_OVERLAY_TYPE_GROUP
|
||||
|
||||
A group of overlays.
|
||||
|
||||
.. data:: ELM_MAP_OVERLAY_TYPE_BUBBLE
|
||||
|
||||
This class can *follow* another overlay.
|
||||
|
||||
.. data:: ELM_MAP_OVERLAY_TYPE_ROUTE
|
||||
|
||||
This is used to draw a route result on the map.
|
||||
|
||||
.. data:: ELM_MAP_OVERLAY_TYPE_LINE
|
||||
|
||||
Simply draw a line on the map.
|
||||
|
||||
.. data:: ELM_MAP_OVERLAY_TYPE_POLYGON
|
||||
|
||||
Simply draw a polygon on the map.
|
||||
|
||||
.. data:: ELM_MAP_OVERLAY_TYPE_CIRCLE
|
||||
|
||||
Simply draw a circle on the map.
|
||||
|
||||
.. data:: ELM_MAP_OVERLAY_TYPE_SCALE
|
||||
|
||||
This will draw a dinamic scale on the map.
|
||||
|
||||
|
||||
.. _Elm_Map_Route_Method:
|
||||
|
||||
Map route methods
|
||||
-----------------
|
||||
|
||||
.. data:: ELM_MAP_ROUTE_METHOD_FASTEST
|
||||
|
||||
Route should prioritize time
|
||||
|
||||
.. data:: ELM_MAP_ROUTE_METHOD_SHORTEST
|
||||
|
||||
Route should prioritize distance
|
||||
|
||||
|
||||
.. _Elm_Map_Route_Type:
|
||||
|
||||
Map route types
|
||||
---------------
|
||||
|
||||
.. data:: ELM_MAP_ROUTE_TYPE_MOTOCAR
|
||||
|
||||
Route should consider an automobile will be used.
|
||||
|
||||
.. data:: ELM_MAP_ROUTE_TYPE_BICYCLE
|
||||
|
||||
Route should consider a bicycle will be used by the user.
|
||||
|
||||
.. data:: ELM_MAP_ROUTE_TYPE_FOOT
|
||||
|
||||
Route should consider user will be walking.
|
||||
|
||||
|
||||
.. _Elm_Map_Source_Type:
|
||||
|
||||
Map source types
|
||||
----------------
|
||||
|
||||
.. data:: ELM_MAP_SOURCE_TYPE_TILE
|
||||
|
||||
Map tile provider
|
||||
|
||||
.. data:: ELM_MAP_SOURCE_TYPE_ROUTE
|
||||
|
||||
Route service provider
|
||||
|
||||
.. data:: ELM_MAP_SOURCE_TYPE_NAME
|
||||
|
||||
Name service provider
|
||||
|
||||
|
||||
.. _Elm_Map_Zoom_Mode:
|
||||
|
||||
Map zoom modes
|
||||
--------------
|
||||
|
||||
.. data:: ELM_MAP_ZOOM_MODE_MANUAL
|
||||
|
||||
Zoom controlled manually by :py:attr:`~Map.zoom`
|
||||
|
||||
It's set by default.
|
||||
|
||||
.. data:: ELM_MAP_ZOOM_MODE_AUTO_FIT
|
||||
|
||||
Zoom until map fits inside the scroll frame with no pixels outside this
|
||||
area.
|
||||
|
||||
.. data:: ELM_MAP_ZOOM_MODE_AUTO_FILL
|
||||
|
||||
Zoom until map fills scroll, ensuring no pixels are left unfilled.
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Map
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Map
|
||||
.. autoclass:: MapRoute
|
||||
.. autoclass:: MapName
|
||||
.. autoclass:: MapOverlay
|
||||
.. autoclass:: MapOverlayClass
|
||||
.. autoclass:: MapOverlayBubble
|
||||
.. autoclass:: MapOverlayLine
|
||||
.. autoclass:: MapOverlayPolygon
|
||||
.. autoclass:: MapOverlayCircle
|
||||
.. autoclass:: MapOverlayScale
|
||||
.. autoclass:: MapOverlayRoute
|
|
@ -0,0 +1,33 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Mapbuf
|
||||
######
|
||||
|
||||
.. image:: /images/mapbuf-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
This holds one content object and uses an Evas Map of transformation
|
||||
points to be later used with this content. So the content will be
|
||||
moved, resized, etc as a single image. So it will improve performance
|
||||
when you have a complex interface, with a lot of elements, and will
|
||||
need to resize or move it frequently (the content object and its
|
||||
children).
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``default`` - The main content of the mapbuf
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram:: Mapbuf
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Mapbuf
|
|
@ -0,0 +1,48 @@
|
|||
.. currentmodule:: efl.elementary
|
||||
|
||||
Menu
|
||||
####
|
||||
|
||||
.. image:: /images/menu-preview.png
|
||||
|
||||
|
||||
Widget description
|
||||
==================
|
||||
|
||||
A menu is a list of items displayed above its parent.
|
||||
|
||||
When the menu is showing its parent is darkened. Each item can have a
|
||||
sub-menu. The menu object can be used to display a menu on a right click
|
||||
event, in a toolbar, anywhere.
|
||||
|
||||
|
||||
Emitted signals
|
||||
===============
|
||||
|
||||
- ``clicked`` - the user clicked the empty space in the menu to dismiss.
|
||||
- ``dismissed`` - the user clicked the empty space in the menu to dismiss (since 1.8)
|
||||
|
||||
|
||||
Layout content parts
|
||||
====================
|
||||
|
||||
- ``default`` - A main content of the menu item
|
||||
|
||||
|
||||
Layout text parts
|
||||
=================
|
||||
|
||||
- ``default`` - label in the menu item
|
||||
|
||||
|
||||
Inheritance diagram
|
||||
===================
|
||||
|
||||
.. inheritance-diagram::
|
||||
Menu
|
||||
MenuItem
|
||||
:parts: 2
|
||||
|
||||
|
||||
.. autoclass:: Menu
|
||||
.. autoclass:: MenuItem
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`actionslider` Module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: efl.elementary.actionslider
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.actionslider
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`background` Module
|
||||
------------------------
|
||||
|
||||
.. automodule:: efl.elementary.background
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.background
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`box` Module
|
||||
-----------------
|
||||
|
||||
.. automodule:: efl.elementary.box
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.box
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`bubble` Module
|
||||
------------------------
|
||||
|
||||
.. automodule:: efl.elementary.bubble
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.bubble
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`button` Module
|
||||
--------------------
|
||||
|
||||
.. automodule:: efl.elementary.button
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.button
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`calendar_elm` Module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: efl.elementary.calendar_elm
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.calendar_elm
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`check` Module
|
||||
-------------------
|
||||
|
||||
.. automodule:: efl.elementary.check
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.check
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`clock` Module
|
||||
------------------------
|
||||
|
||||
.. automodule:: efl.elementary.clock
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.clock
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`colorselector` Module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: efl.elementary.colorselector
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.colorselector
|
||||
:parts: 2
|
|
@ -1,4 +0,0 @@
|
|||
:mod:`configuration` Module
|
||||
---------------------------
|
||||
|
||||
.. automodule:: efl.elementary.configuration
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`conformant` Module
|
||||
------------------------
|
||||
|
||||
.. automodule:: efl.elementary.conformant
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.conformant
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`ctxpopup` Module
|
||||
------------------------
|
||||
|
||||
.. automodule:: efl.elementary.ctxpopup
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.ctxpopup
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`datetime_elm` Module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: efl.elementary.datetime_elm
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.datetime_elm
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`dayselector` Module
|
||||
-------------------------
|
||||
|
||||
.. automodule:: efl.elementary.dayselector
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.dayselector
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`diskselector` Module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: efl.elementary.diskselector
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.diskselector
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`entry` Module
|
||||
-------------------
|
||||
|
||||
.. automodule:: efl.elementary.entry
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.entry
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`fileselector` Module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: efl.elementary.fileselector
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.fileselector
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`fileselector_button` Module
|
||||
---------------------------------
|
||||
|
||||
.. automodule:: efl.elementary.fileselector_button
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.fileselector_button
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`fileselector_entry` Module
|
||||
--------------------------------
|
||||
|
||||
.. automodule:: efl.elementary.fileselector_entry
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.fileselector_entry
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`flip` Module
|
||||
------------------------
|
||||
|
||||
.. automodule:: efl.elementary.flip
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.flip
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`flipselector` Module
|
||||
--------------------------
|
||||
|
||||
.. automodule:: efl.elementary.flipselector
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.flipselector
|
||||
:parts: 2
|
|
@ -1,8 +0,0 @@
|
|||
:mod:`frame` Module
|
||||
------------------------
|
||||
|
||||
.. automodule:: efl.elementary.frame
|
||||
|
||||
.. inheritance-diagram::
|
||||
efl.elementary.frame
|
||||
:parts: 2
|
|
@ -1,4 +0,0 @@
|
|||
:mod:`general` Module
|
||||
---------------------
|
||||
|
||||
.. automodule:: efl.elementary.general
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue